提交时间:2024-08-20 20:40:04
运行 ID: 169945
#include<bits/stdc++.h> 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 and 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; }