提交时间:2024-01-25 09:19:36

运行 ID: 127505

#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; }