递归画画
#include<iostream>
using namespace std;
const int N=1e4;
char g[N][N];
void dfs(int n)
{
if(n==1) {
g[1][1]='X';
return;
}
dfs(n-1);
int len=1;
for(int i=1;i<n-1;i++) len*=3;
int fy[4]={2,1,0,2},fx[4]={0,1,2,2};
for(int k=0;k<4;k++)
{
for(int i=1;i<=len;i++)
for(int j=1;j<=len;j++){
g[len*fx[k]+i][len*fy[k]+j] = g[i][j];
}
}
}
int main()
{
dfs(7);
int n;
while(cin>>n ,n!=-1)
{
int len=1;
for(int i=1;i<=n-1;i++) len*=3;
// cout<<len<<endl;
for(int i=1;i<=len;i++){
for(int j=1;j<=len;j++){
if(g[i][j]) cout<<g[i][j];
else cout<<' ';
}
cout<<endl;
}
cout<<'-'<<endl;
}
return 0;
}