洛谷P1498 南蛮图腾[递归好题]

南蛮图腾

题目背景

自从到了南蛮之地,孔明不仅把孟获收拾的服服帖帖,而且还发现了不少少数民族的智慧,他发现少数民族的图腾往往有着一种分形的效果,在得到了酋长的传授后,孔明掌握了不少绘图技术,但唯独不会画他们的图腾,于是他找上了你的爷爷的爷爷的爷爷的爷爷……帮忙,作为一个好孙子的孙子的孙子的孙子……你能做到吗?

题目描述

给定一个正整数 n n n,参考输出样例,输出图形。

输入格式

每个数据输入一个正整数 n n n,表示图腾的大小(此大小非彼大小)

输出格式

这个大小的图腾

样例 #1

样例输入 #1

2

样例输出 #1

   /\/__\/\  /\
/__\/__\

样例 #2

样例输入 #2

3

样例输出 #2

       /\/__\/\  /\/__\/__\/\      /\/__\    /__\/\  /\  /\  /\
/__\/__\/__\/__\

提示

数据保证, 1 ≤ n ≤ 10 1 \leq n \leq 10 1n10

观察数据:得到图新的大小

n=1,2 x 4 大小
n=2,4 x 8 大小
n=3,8 x 16大小
n=m时,pow(2,m) x 2*pow(2,m)大小 

首先初始化数组的大小全为空格
接下来为大家写一个递归函数dfs进行细节简述:

void dfs(int x, int y, int n)//坐标和递归层数
{if (n == 1)//层数到1的时候直接存放图腾{w[x][y] = '/';w[x][y + 1] = '\\';//注意这里‘\’是不合法的要前面加一个'\'w[x+1][y-1]='/';w[x + 1][y + 2] = '\\';w[x + 1][y] = '_';w[x + 1][y + 1] = '_';return;}dfs(x, y, n - 1);//处理本部dfs(x + pow(2, n - 1), y - pow(2, n - 1), n - 1);//向左下边填充dfs(x + pow(2, n - 1), y + pow(2, n - 1), n - 1);//向右下填充
}

完整代码如下:

#include<iostream>
#include<cstring>
#include<string>
#include<algorithm>
#include<cmath>
using namespace std;
int n;
char w[20005][20005];//图
void dfs(int x, int y, int n)//坐标和递归层数
{if (n == 1)//层数到1的时候直接存放图腾{w[x][y] = '/';w[x][y + 1] = '\\';//注意这里‘\’是不合法的要前面加一个'\'w[x+1][y-1]='/';w[x + 1][y + 2] = '\\';w[x + 1][y] = '_';w[x + 1][y + 1] = '_';return;}dfs(x, y, n - 1);//处理本部dfs(x + pow(2, n - 1), y - pow(2, n - 1), n - 1);//向左下边填充dfs(x + pow(2, n - 1), y + pow(2, n - 1), n - 1);//向右下填充
}
int main()
{ios::sync_with_stdio(false);cin.tie(0);cout.tie(0);cin >> n;for (int i = 1; i <= pow(2, n); i++)for (int j = 1; j <= 2 * pow(2,n); j++)w[i][j] = ' ';dfs(1,pow(2,n),n);//从第一行的中间位置开搜for (int i = 1; i <= pow(2, n); i++) {for (int j = 1; j <= 2 * pow(2, n); j++){cout << w[i][j];}cout << '\n';}return 0;
}

AC记录:
在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/bicheng/44457.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【Android】kotlin jdk版本冲突与Kotlin依赖管理插件

1、androidx.activity&#xff1a;activity&#xff1a;1.8.0 依赖版本错误问题 *依赖项“androidx.activity&#xff1a;activity&#xff1a;1.8.0”要求依赖它的库和应用针对版本 34 或更高版本 Android API 进行编译。&#xff1a;app 目前是针对 android-33 编译的。此外…

短视频带货的新趋势:揭秘萤瓴优选智能分镜功能的轻资产另类新风口

随着互联网的飞速发展&#xff0c;短视频平台如雨后春笋般崛起&#xff0c;短视频带货已成为电商领域的新宠。在这个趋势下,萤瓴优选凭借其独特的智能分镜功能&#xff0c;引领了一股轻资产另类新风口&#xff0c;为众多电商从业者带来了新的机遇。本文将深入探讨短视频带货的新…

解决:Failed to load PostCSS config: Failed to load PostCSS config

报错信息: [Failed to load PostCSS config: Failed to load PostCSS config (searchPath: D:/project/vite-vue-project): [Error] Must use import to load ES Module: D:\project\vite-vue-project\postcss.config.ts require() of ES modules is not supported. require(…

【Spring】springSecurity中WebSecurityConfigurerAdapter类中configure方法(5版本以下)

1、简介 在Spring Security中&#xff0c;WebSecurityConfigurerAdapter 类是一个配置适配器&#xff0c;它提供了多种 configure 方法的重载&#xff0c;允许开发者以声明性的方式配置Web安全。 2、相关规则 1. configure(WebSecurity web) 此方法用于配置哪些请求应该被Sp…

10个JavaScript One-Liners让初学者看起来很专业

原文链接&#xff1a;https://pinjarirehan.medium.com/10-javascript-one-liners-for-beginner-developers-to-look-pro-b9548353330a 原文作者&#xff1a;Rehan Pinjari 翻译&#xff1a;小圆 你是不是在辛苦码字时&#xff0c;看到别人轻松甩出一行 JavaScript 就搞定难题…

量化机器人对投资策略的调整

量化机器人在现代投资管理中扮演着越来越重要的角色&#xff0c;尤其在调整和优化投资策略方面表现出其独特的价值。通过运用先进的算法、人工智能和大数据分析&#xff0c;这些机器人能够实现投资策略的高度自动化调整&#xff0c;帮助投资者适应不断变化的市场环境。 首先&a…

DangerWind-RPC-framework---三、服务端下机

当一台机器下线时&#xff0c;面临很多问题&#xff1a;如何将其从注册中心下线&#xff1f;如何清理释放资源&#xff1f;客户端拉取服务列表时也使用了本地缓存&#xff0c;如何及时更新本地缓存&#xff1f; 服务端机器的优雅下线需要使用ShutdownHook&#xff0c;这相当于添…

前端八股文 插槽的使用场景

什么是插槽 官方解释&#xff1a;Vue 实现了一套内容分发的 API&#xff0c;将 元素作为承载分发内容的出口。 大白话&#xff1a;插槽就是子组件中的提供给父组件使用的一个占位符&#xff0c;用<slot> 表示&#xff0c;父组件可以在这个占位 符中填充任何模板代码&am…

苹果笔记本电脑能玩哪些游戏 苹果电脑可以玩的单机游戏推荐

苹果笔记本有着优美的外观和强大的性能。用户不仅可以使用苹果笔记本办公、剪辑&#xff0c;越来越多的用户开始关注苹果笔记本在游戏领域的表现&#xff0c;尤其是在大型游戏方面。本文将为你详细介绍苹果笔记本都能玩什么游戏&#xff0c;以及为你推荐苹果电脑可以玩的单机游…

Mybatis之动态sql、缓存、分页、配置数据源

SQL动态查询 if标签 当传递某个DTO时&#xff0c;需要根据某个属性是否存在而动态增加条件时&#xff0c;就可以使用if标签 <select id"getUser" resultType"user">select id, name, age, sex from user where 11<if test"userDto.name !…

EventBus原理分析

EventBus 是一个流行的事件发布/订阅框架&#xff0c;主要用于简化 Android 应用中不同组件之间的通信。它的设计基于观察者模式&#xff0c;可以有效地减少组件间的耦合性&#xff0c;使得代码更加模块化和可维护。 下面是 EventBus 的实现原理&#xff0c;结合其源码进行说明…

快到不可思议!Internet Download Manager下载器,让你的网速飞起来!

&#x1f31f; 快到不可思议&#xff01;Internet Download Manager下载器&#xff0c;让你的网速飞起来&#xff01;&#x1f680; 嗨喽&#xff0c;各位csdn的朋友们&#xff01;&#x1f44b;今天我要跟大家分享一个我超爱的下载神器——Internet Download Manager&#xff…

MySQL相关函数

SQL函数 聚合函数 定义&#xff1a;聚合函数作用与一组数据&#xff0c;并对一组数据返回一个值。 常用&#xff1a;AVG()、SUM()、MAX()、MIN()、COUNT()。 说明&#xff1a;聚合函数不能嵌套使用。 字符串函数 MYSQL中常用的字符串函数&#xff1a; 函数名作用concat(s1,s…

springboot+vue项目实战2024第三集修改用户信息

1.获取用户信息 GetMapping("/userInfo")// RequestHeader(name "Authorization") String tokenpublic Result<User> userInfo(){// Map<String, Object> map JwtUtil.parseToken(token);Map<String,Object> map ThreadLocalUti…

基于uni-app与图鸟UI的知识付费小程序模板

一、项目概述 在知识经济蓬勃发展的背景下&#xff0c;移动互联网成为知识传播与消费的重要渠道。本项目旨在利用前沿的前端技术栈——uni-app及高效UI框架图鸟UI&#xff0c;打造一款集多功能于一体的、面向广大求知者的知识付费平台移动端模板。该模板旨在简化开发流程&…

Java:分批查询

前言 最近遇到一个场景问题&#xff0c;就是基于SQL server数据库的规范&#xff0c;查询条件in如果个数超过2100个就会报错。由于是ORM映射框架采用的MybatisPlus 起初我想到的是基于 MybatisPlus 的 参数分割&#xff0c;测试还是不行&#xff0c;于是就直接基于 mybatis xm…

自定义业务非受检异常

【受检和非受检异常】 受检异常&#xff1a;当你需要强制调用者对异常异常进行处理时&#xff0c;抛出该类型异常。往往适用于开发通用的底层接口、或者调用第三方出现异常时。 非受检异常&#xff1a;当你不需要调用者关心时&#xff0c;抛出该类型异常。往往适用于普通的业务…

arm64架构下源码编译安装kafka —— 筑梦之路

一般来说&#xff0c;直接使用官方提供的二进制文件即可&#xff0c;没有必要使用源码编译安装的方式&#xff0c;而对于有特殊用途的&#xff0c;选择源码编译安装无疑是更好地选择。比如修改源码实现想要的功能&#xff0c;mirrormaker2保持topic名称不变。 git clone https…

缓存击穿、缓存穿透、缓存雪崩以及应对措施

1.缓存击穿 1.1概念 是指当某一key的缓存时间过期时大量并发量的请求同时访问此key&#xff0c;瞬间击穿服务器的直接访问数据库&#xff0c;让数据库处于负载的情况。 1.2解决措施 1.2.1异步定时更新 在缓存处理上&#xff0c;某一个热点数据的过期时间为一小时&#xff…

线性回归笔记

https://blog.51cto.com/u_16213589/7682076 残差图 多元回归-最小二乘法-残差分析笔记 一.多元线性回归模型的假设 我们需要进行以下六个假设&#xff0c;这些假设是经典的多元线性回归模型有效的前提&#xff1a; 1、因变量Y和自变量X1&#xff0c;X2&#xff0c;…&#…