提交时间:2024-08-20 21:04:48
运行 ID: 171975
#include <iostream> #include <algorithm> #include <cstring> using namespace std; const int n=1000; char g[n][n]; int dx[4]={0,1,2,2},dy[4]={2,1,0,2}; void dfs(int u){ if(u==1) { g[0][0]='x'; return; } dfs(u-1); int k=1; for(int i=0;i<u-2;i++)k*=3; for(int i=0;i<4;i++) { int x=dx[i]*k,y=dy[i]*k; for(int j=0;j<k;j++) { for(int p=0;p<k;p++) { g[x+j][y+p]=g[j][p]; } } } } int main() { dfs(7); int n; while(cin>>n&&n!=-1) { int k=1; for(int i=1;i<n;i++)k*=3; for(int i=0;i<k;i++) { for(int j=0;j<k;j++) { if(g[i][j])cout<<g[i][j]; else cout<<' '; } puts(""); } puts("-"); } return 0; }