洛谷——P1498 南蛮图腾

https://www.luogu.org/problem/show?pid=1498

题目描述

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

输入输出格式

输入格式:

 

每个数据一个数字,表示图腾的大小(此大小非彼大小) n<=10

 

输出格式:

 

这个大小的图腾

 

输入输出样例

输入样例#1:
2
输出样例#1:
   /\
  /__\
 /\  /\
/__\/__\
输入样例#2:
3
输出样例#2:
       /\
      /__\
     /\  /\
    /__\/__\
   /\      /\
  /__\    /__\
 /\  /\  /\  /\
/__\/__\/__\/__\

基础算法貌似不会诶~~


先给数组清成空格 方便
每当大小为1时,就构建三角
最后输出
size表示大小,x表示行,y表示列
 1 #include <algorithm>
 2 #include <cstring>
 3 #include <cstdio>
 4 
 5 using namespace std;
 6 
 7 int n;
 8 char s[2333][2333];
 9 
10 void DFS(int size,int x,int y)
11 {
12     if(size==1)
13     {
14         s[x][y]=s[x][y+1]='_';
15         s[x][y-1]=s[x-1][y]='/';
16         s[x][y+2]=s[x-1][y+1]='\\';
17         return ;
18     }
19     int move=1<<size-1;
20     DFS(size-1,x,y-move);
21     DFS(size-1,x,y+move);
22     DFS(size-1,x-move,y);
23 }
24 
25 int main()
26 {
27     scanf("%d",&n);
28     memset(s,' ',sizeof(s));
29     int n_=1<<n;
30     DFS(n,n_,n_);
31     for(int i=1;i<=n_;i++)
32     {
33         for(int j=1;j<=n_<<1;j++)
34             printf("%c",s[i][j]);
35         printf("\n");
36     }
37     return 0;
38 }

 

posted @ 2017-06-18 20:16  Aptal丶  阅读(307)  评论(0编辑  收藏  举报