洛谷——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 }
——每当你想要放弃的时候,就想想是为了什么才一路坚持到现在。