Run ID | 作者 | 问题 | 语言 | 测评结果 | 分数 | 时间 | 内存 | 代码长度 | 提交时间 |
---|---|---|---|---|---|---|---|---|---|
104987 | 方文轩 | 魔方阵 | C++ | 运行超时 | 0 | 1000 MS | 240 KB | 1079 | 2023-10-04 21:29:46 |
#include <iostream> #include <iomanip> using namespace std; int main() { int i, j, i1, j1, n, p, d[16][16]; cout << "请输入阶数(必须是奇数):"; while(1)//控制输入的阶数 { cin >> n; if( n<1 || n>10 ) continue; if( n>1 && n%2!=0 ) break; } for(i=1;i<n+1;++i)//数组初始化全为0 for(j=1;j<n+1;++j) d[i][j]=0; i=1; j=n/2+1; d[i][j]=1;//1位于第一行的正中间 for(p=2;p<=n*n;++p)//数字2、3、……、n*n的摆放 { //上一行,下一列 i1=i; j1=j; i--; j++; //可能的三种情况 if(i==0) i=n;//没有上一行的处理措施 if(j>n) j=1;//没有下一列的处理措施 if(d[i][j]!=0) {i=i1+1;j=j1;}//新位置已经放了数的处理措施 d[i][j]=p;//摆放 } for(i=1;i<n+1;++i)//输出魔方阵 { for(j=1;j<n+1;++j) cout<<setw(3)<<d[i][j]; cout<<endl; } return 0; }