分形的题目,想了半天没想出来。。
思路错了,一直纠结于什么时候换行。。
代码如下:
#include<cstdio>
#include<iostream>
#include<cstring>
#include<algorithm>
#include<cmath>
using namespace std;
char a[2500][2500];
void dfs(int dep,int x,int y)
{
if(dep==0) {
a[x][y]='C';
return ;
}
int s=(int)pow(3.0,dep-1);
dfs(dep-1,x,y+s);
dfs(dep-1,x,y+2*s);
dfs(dep-1,x+s,y);
dfs(dep-1,x+2*s,y+s);
dfs(dep-1,x+2*s,y+2*s);
}
int main()
{
int t;
scanf("%d",&t);
while(t--) {
int n;
scanf("%d",&n);
memset(a,' ',sizeof(a));
dfs(n,0,0);
int s=(int)pow(3.0,n);
for(int i=0;i<s;i++)
for(int j=s-1;j>=0;j--) {
if(a[i][j]=='C') {
a[i][j+1]='\0';
break;
}
}
for(int i=0;i<s;i++){
printf("%s\n",a[i]);
}
}
}