Run ID 作者 问题 语言 测评结果 分数 时间 内存 代码长度 提交时间
175676 A班杨翔轶 Jam的计数法 C++ 无测评数据 0 0 MS 0 KB 1159 2024-08-21 10:06:15

Tests(0/0):


#include<iostream> using namespace std; const int N=1e3; int B[N][N]; void dfs(int n){ if(n==1) {//第n级盒子只有一个'X'; B[0][0]=1; return; } dfs(n-1); int len_n_1=1;//表示n-1级盒子边长; for(int i=1;i<=n-2;++i) len_n_1*=3; int dx[4]={0,1,2,2,},dy[5]={2,1,0,2};//表示行和列的变化,单位为len_n_1; for(int i=0;i<4;++i) for(int j=0;j<len_n_1;++j) for(int k=0;k<len_n_1;++k) B[dx[i]*len_n_1+j][dy[i]*len_n_1+k]=B[j][k];//将变化前的值复制给变化后的值; return; } int main() { dfs(7); int n; while(cin>>n&&n!=-1){ int len_n=1;//len_n表示n级盒子边长; for(int i=1;i<=n-1;++i) len_n*=3;//边长=3^(n-1); for(int i=0;i<len_n;++i){//根据输入的数值大小,输出对应边长大小的数组; for(int j=0;j<len_n;++j) if(B[i][j]==1) cout<<'X';//某一位值为1表示该输出'X',否则输出空格; else cout<<' '; cout<<endl; } cout<<'-'<<endl; } }