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