1 solutions
-
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
Information
- ID
- 10686
- Time
- 1000ms
- Memory
- 64MiB
- Difficulty
- (None)
- Tags
- # Submissions
- 0
- Accepted
- 0
- Uploaded By