1 条题解
-
0
C++ :
#include<iostream> using namespace std; int a[100][100]; int n; //选手的个数 /* tox:目标数组的行号 toy:目标数组的列号 fromx:源数组的行号 fromy:源数组的列号 r:数组的大小为 r*r */ void copy(int tox, int toy, int fromx, int fromy, int r) { for(int i = 0; i < r; i++) for(int j = 0; j < r; j++) a[tox+i][toy+j] = a[fromx+i][fromy+j]; } void table(int k) { n = 1 << k; //构造正方形表格的第一行数据 for(int i = 0; i < n; i++) a[0][i] = i + 1; //采用分治算法,构造整个循环赛日程表 for(int r = 1; r < n; r <<= 1) for(int i = 0; i < n; i += 2*r) { copy(r, r + i, 0, i, r); //左上角复制到右下角 copy(r, i, 0, r + i, r); //右上角复制到左下角 } } int main() { int k; cin>>k; table(k); for(int i = 0; i < n; i++) { for(int j = 0; j < n; j++) { cout<< a[i][j] << " "; } cout<<endl; } return 0; }
- 1
信息
- ID
- 2297
- 时间
- 1000ms
- 内存
- 64MiB
- 难度
- (无)
- 标签
- 递交数
- 0
- 已通过
- 0
- 上传者