代码来源:DeathYmz
AC的C++语言程序如下:
#include<cstdio>
#include<iostream>
#include<cstring>
#include<cmath>
using namespace std;
int n,sum;//3^6=729
const int N=1000;
char vis[N][N];
void B(int num,int x,int y)
{
if(num==1)
vis[x][y]='X';
else
{
int m=pow(3,num-2);
B(num-1,x,y);//左上 当前
B(num-1,x,y+2*m);//坐左下
B(num-1,x+2*m,y);//右上
B(num-1,x+2*m,y+2*m);//右下
B(num-1,x+m,y+m);//中间
}
}
int main()
{
while(scanf("%d",&n)!=EOF&&n!=-1)
{
memset(vis,' ',sizeof(vis));
sum=pow(3,n-1);
B(n,0,0);
for(int i=0;i<sum;i++)
{
vis[i][sum]='\0';
cout<<vis[i]<<endl;
// printf("\n");
}
printf("-\n");
}
return 0;
}