题目链接

南蛮图腾入口

题目描述

题目描述

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

输入格式

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

输出格式

这个大小的图腾

输入输出样例

输入1

2

输出1

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

输入2

3

输出2

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

说明/提示

数据保证,1 ≤ n ≤ 10。

思路分析

这道题采用分冶法

分冶法定义

分冶法是把一个规模为N的问题分成两个或多个较小的与原问题类型相同的子问题,通过对子问题的求解,并把子问题的解合并起来从而构成整个问题的解,即对问题各个击破,分而治之。如果子问题的的规模仍然相当大,仍不足以很容易的求得它的解,这时可以对此子问题重复的应用分冶策略。

思路分析

细心观察一下这道题,发现n=2时,是由三个n=1时的图形

/\
   /__\  组成,

而n=3时,是由三个n=2的图形

/\
   /__\
  /\    /\
/__\/__\ 组成。

所以刚好满足分冶的思想,将一个大的三角图腾分成上,左下,右下三个小部分,而这三个小部分又可以继续细分为更小的三个部分......最后直到最小的n=1时的图形

/\
   /__\  。

而且我们可以观察到如果将这些图形存入到一个数组中,那么可以得出当输出一个正整数为n的图形时,需要一个2^n行2^(n+1)列的数组(图形总的大小,下面的h,w指的是复制过程中小三角形的行数和列数)。我的思路是从最左下部分开始,输入n=1时的图案,然后向右复制和向上复制,此时可以得到n=2时的图形,以这个n=2时的图形继续向右向上复制,就可以得到n>=2的图腾。

PS:

处理复制时,设置变量h为图形的高(所占的行数大小),设置变量w为图形的宽(所占列数的大小)。

向右复制:对于原有每一行的图形向右平移w个单位长度后的坐标点,就是向右复制过去的坐标点;

向上复制:对于原有的图形同时向右,向上移动h个单位后的坐标点,就是向上复制过去的坐标点。

AC代码

#include<iostream>
#include<cmath>
using namespace std;
int main()
{int n=0;cin>>n;int x=pow(2,n), y=pow(2,n+1);char**a=new char*[x+1];for(int i=0;i<=x;i++){a[i]=new char[y+1];for(int j=0;j<=y;j++){a[i][j]=' ';}}a[x][4]=a[x-1][3]='\\';//这里要写两个反斜杠,一个反斜杠是转义字符a[x][1]=a[x-1][2]='/';a[x][2]=a[x][3]='_';if(n>1){int w=4,h=2;for(int k=1;k<n;k++){for(int i=0;i<h;i++){for(int j=1;j<=w;j++){a[x-i][j+w]=a[x-i][j];a[x-i-h][j+h]=a[x-i][j];}}w*=2;h*=2;}}for(int i=1;i<=x;i++){for(int j=1;j<=y;j++){cout<<a[i][j];}cout<<endl;}return 0;
} 

如果有哪里思路出错或者可以优化的,请大家多多指教

P1498 南蛮图腾---洛谷(分冶)相关推荐

  1. 分治——南蛮图腾(洛谷 P1498)

    题目选自洛谷P1498 把杨辉三角对2取模输出看下结果,这是12行内的结果: 11 1 1 0 1 1 1 1 1 1 0 0 0 1 1 1 0 0 1 1 1 0 1 0 1 0 1 1 1 1 ...

  2. 洛谷 P1498 南蛮图腾

    P1498 南蛮图腾 题目描述 自从到了南蛮之地,孔明不仅把孟获收拾的服服帖帖,而且还发现了不少少数民族的智慧,他发现少数民族的图腾往往有着一种分形的效果,在得到了酋长的传授后,孔明掌握了不少绘图技术 ...

  3. P1498 南蛮图腾 题解

    P1498 南蛮图腾 题解 题目描述 自从到了南蛮之地,孔明不仅把孟获收拾的服服帖帖,而且还发现了不少少数民族的智慧,他发现少数民族的图腾往往有着一种分形的效果,在得到了酋长的传授后,孔明掌握了不少绘 ...

  4. 洛谷 P1498 南蛮图腾 分治递归过程详解

    题目描述 自从到了南蛮之地,孔明不仅把孟获收拾的服服帖帖,而且还发现了不少少数民族的智慧,他发现少数民族的图腾往往有着一种分形的效果,在得到了酋长的传授后,孔明掌握了不少绘图技术,但唯独不会画他们的图 ...

  5. 【洛谷】P1498 南蛮图腾(分治)题解

    原题链接:https://www.luogu.org/problem/P1498 题目描述 自从到了南蛮之地,孔明不仅把孟获收拾的服服帖帖,而且还发现了不少少数民族的智慧,他发现少数民族的图腾往往有着 ...

  6. 洛谷-P1498 南蛮图腾

    题目描述 自从到了南蛮之地,孔明不仅把孟获收拾的服服帖帖,而且还发现了不少少数民族的智慧,他发现少数民族的图腾往往有着一种分形的效果,在得到了酋长的传授后,孔明掌握了不少绘图技术,但唯独不会画他们的图 ...

  7. 洛谷P1498 南蛮图腾

    该怎么输出,第一行随着输入的不同起始位置也在改变,可以将空白的部分也看成和三角类似的字符串吗,毕竟他们的面积有倍数关系:哦,不能直接cout单独一个三角,因为随着输入不同,每行也都不相同,所以应该用二 ...

  8. [洛谷P1498] 南蛮图腾(分治+递归)

    分析 根据题目标签,首先解释一下分治算法:分治算法的基本思想是将一个规模为N的问题分解为K个规模较小的子问题,这些子问题相互独立且与原问题性质相同.求出子问题的解,就可得到原问题的解.即一种分目标完成 ...

  9. 洛谷——P1498 南蛮图腾

    题目描述 自从到了南蛮之地,孔明不仅把孟获收拾的服服帖帖,而且还发现了不少少数民族的智慧,他发现少数民族的图腾往往有着一种分形的效果(看Hint),在得到了酋长的传授后,孔明掌握了不少绘图技术,但唯独 ...

最新文章

  1. 如何最好一个管理者?
  2. 让你的系统“坚挺不倒”的最后一个大招——「降级」
  3. python 异步io_python之同步IO和异步IO
  4. git提交异常 fatal: LF would be replaced by..
  5. 大乐透python预测程序_Python生成随机验证码,大乐透号码
  6. php对mysql解决乱码_PHP彻底解决mysql中文乱码-阿里云开发者社区
  7. 可并堆试水--BZOJ1367: [Baltic2004]sequence
  8. [整理]让winCE支持中文界面(可切换至英文界面)
  9. php curl 返回cookie_分享新浪图床上传接口PHP源码
  10. 4月17日 键盘大小写指示indicator-lockkeys
  11. 【Android 10 源码】深入理解 MediaCodec configure
  12. wamp 增加php 7.2,笔记 : WampServe加装PHP版本(7.2.3)为例
  13. Taro框架中开发H5使用微信分享
  14. 计算机无法添加本地策略组,win7本地组策略编辑器不能编辑怎么解决
  15. 【股票融资融券模拟交易系统】开发与设计
  16. 数字孪生应用案例及常用技术
  17. 详解高速缓存存储器的3种映射方式
  18. 封装PC端使用海康插件播放摄像头直播流(VUE)
  19. 基于哈里斯鹰算法优化概率神经网络PNN的分类预测-附代码
  20. Vmware 虚拟机设置主机映射端口

热门文章

  1. dataframe去掉行索引_DataFrame按索引删除行、列
  2. 银行服务器销售业务,利用呼叫中心进行远程销售
  3. CMA资质认定和CNAS实验室认可的区别有哪些?
  4. 旋转矩阵【北京航空航天大学】
  5. 同盾设备指纹简单分析及手机相关ID了解
  6. HDS CTO谈优化存储投资 渡过经济寒冬
  7. ios多线程浅谈和使用
  8. 深度学习目标检测---使用yolov5训练自己的数据集模型(Windows系统)
  9. linux系统怎么两个盘对拷,Linux分区对拷等小技巧
  10. linux高手知乎,配置一个简洁高效的 Zsh | Linux 中国