题目
给定一个正整数n,参考输出样例,输出图形。
输入输出格式
输入格式
每个数据输入一个正整数n,表示图腾的大小(此大小非彼大小)
输出格式
这个大小的图腾
输入输出样例
输入样例
2
输出样例
/\/__\/\ /\
/__\/__\
解析
这个题目同样采用分治算法的思想,当n=k时的图腾,就相当于是n=k-1时的图腾通过平移得到三个不同的图形形成图腾。针对这个题目,首先需要解决当n=1时图形的输出,接着分析三次平移相应的偏移量,最后根据数据的大小输出图形,即可解决。相应的规律如下:
#include<iostream>
#include<cstring>
#include<cmath>
using namespace std;
char c[2050][2050];
void f(int x,int y,int n){if(n==1){//当n=1时图形的输出 c[x][y+1]='/';c[x+1][y]='/';c[x][y+2]='\\';c[x+1][y+3]='\\';c[x+1][y+1]='_';c[x+1][y+2]='_';return ;}int distance = pow(2,n);//根据偏移量,通过三次平移,将三个三角形得到组合 f(x,y+distance/2,n-1); f(x+distance/2,y,n-1);f(x+distance/2,y+distance,n-1);
}
int main(){int n;cin>>n;memset(c,' ',sizeof(c));//初始化为空格 f(0,0,n);int distance=pow(2,n);for(int i=0;i<distance;i++){//输出 for(int j=0;j<distance*2;j++){cout<<c[i][j];}cout<<endl;}return 0;
}