Run ID | 作者 | 问题 | 语言 | 测评结果 | 分数 | 时间 | 内存 | 代码长度 | 提交时间 |
---|---|---|---|---|---|---|---|---|---|
2261 | 匿名用户 | 循环比赛 | C++ | 运行超时 | 0 | 1000 MS | 196 KB | 755 | 2019-11-16 21:05:11 |
#include<cstdio> const int MAXN=33,MAXM=5; int matchlist[MAXN][MAXN]; int m; int main() { //printf("Input m:"); scanf("%d",&m); int n=1<<m,k=1,half=1; // 1<<m 相当于 2^m matchlist[0][0]=1; while (k<=m) { for (int i=0;i<half;i++) //构造右上方方阵 for (int j=0;j<half;j++) matchlist[i][j+half]=matchlist[i][j]+half; for (int i=0;i<half;i++) //对称交换构造下半部分方阵 for (int j=0;j<half;j++) { matchlist[i+half][j]=matchlist[i][j+half]; //左下方方阵等于右上方方阵 matchlist[i+half][j+half]=matchlist[i][j]; //右下方方阵等于左上方方阵 } half*=2; k++; } for (int i=0;i<n;i++) { for (int j=0;j<n;j++) printf("%4d",matchlist[i][j]); putchar('\n'); } return 0; }