比赛 随便比赛 评测结果 A
题目名称 分形 最终得分 100
用户昵称 徐诗畅 运行时间 0.437 s
代码语言 C++ 内存使用 5.53 MiB
提交时间 2024-08-27 19:58:38
显示代码纯文本
#include<bits/stdc++.h>
using namespace std;
int n,ans[755][755];
int nx[4]={2,1,0,2};
int ny[4]={0,1,2,2};
int num[8]={1,3,9,27,81,243,729,2187};
void dfs(int x){
    if(x==1){ ans[1][1]=1; return;}
    dfs(x-1);
    for(int k=0;k<=3;k++){
        for(int i = 1;i<=num[x-2];i++){
            for(int j = 1;j<=num[x-2];j++){
                ans[nx[k]*num[x-2]+i][ny[k]*num[x-2]+j]=ans[i][j];
            }
        }
    }
}
int main(){
    freopen("fractal.in","r",stdin);
    freopen("fractal.out","w",stdout);
    scanf("%d",&n);
    while(n!=-1){
        memset(ans,0,sizeof(ans));
        dfs(n);
        for(int i = 1;i<=num[n-1];i++){
            for(int j = 1;j<=num[n-1];j++)
            if(ans[i][j]) cout<<"X";
            else cout<<" ";
            cout<<endl;
        }
        cout<<"-\n";
        scanf("%d",&n);
    }
    return 0; 
}