Run ID | 作者 | 问题 | 语言 | 测评结果 | 分数 | 时间 | 内存 | 代码长度 | 提交时间 |
---|---|---|---|---|---|---|---|---|---|
127505 | 凌艺樽 | 循环比赛 | C++ | 通过 | 100 | 0 MS | 268 KB | 947 | 2024-01-25 09:19:36 |
#include<bits/stdc++.h> #include<math.h> using namespace std; void Combine(int t, int n, int** a) { int i, j; for (i =t; i <=t+n/2-1 ; i++) { for (j = n / 2 + 1; j <= n; j++) { a[i][j] = a[i + n / 2][j - n / 2]; } } for (i = t + n / 2; i <= t + n - 1; i++) { for (j = n / 2 + 1; j <= n; j++) { a[i][j] = a[i - n / 2][j - n / 2]; } } } void Table(int t,int n, int** a) { int i, j; if (n == 2) { a[t][1] = t; a[t][2] = t+1; a[t+1][1] =t+1; a[t+1][2] = t; } else { Table(t, n / 2, a); Table(t + n / 2, n / 2, a); } Combine(t, n, a); } int main() { int k; cin >> k; int n = pow(2, k); int i; int t = 1; int** a = new int* [n]; for (i = 1; i <= n; i++) { a[i] = new int[n]; } Table(t,n,a); for (int i = 1; i <= n; i++) { for (int j = 1; j <= n; j++) { cout<< std::left << setw(4) << a[i][j]; } cout << endl; } return 0; }