题目传送门

递归画画

#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;
}

 posted on 2019-08-29 15:57  谁是凶手1703  阅读(58)  评论(0)    收藏  举报