2 条题解
-
3
#include<bits/stdc++.h> using namespace std; void solve(int m) { int n = 1 << m; vector<vector<int>> table(n, vector<int>(n, 0)); for (int i = 0; i < n; ++i) { table[i][0] = i + 1; } for (int step = 1; step < n; step <<= 1) { for (int i = 0; i < n; i += 2 * step) { for (int j = 0; j < n; j += 2 * step) { for (int r = 0; r < step; ++r) { for (int c = 0; c < step; ++c) { table[i + step + r][j + step + c] = table[i + r][j + c]; } } for (int r = 0; r < step; ++r) { for (int c = 0; c < step; ++c) { table[i + r][j + step + c] = table[i + step + r][j + c]; } } } } } for (int i = 0; i < n; ++i) { for (int j = 0; j < n; ++j) { cout << table[i][j]; if (j < n - 1) cout << " "; } cout << "\n"; } } int main() { ios::sync_with_stdio(false); cin.tie(0); int m; if (cin >> m) { solve(m); } return 0; } -
0
#include<bits/stdc++.h> using namespace std; void solve(int m) { int n = 1 << m; vector<vector<int>> table(n, vector<int>(n, 0)); for (int i = 0; i < n; ++i) { table[i][0] = i + 1; } for (int step = 1; step < n; step <<= 1) { for (int i = 0; i < n; i += 2 * step) { for (int j = 0; j < n; j += 2 * step) { for (int r = 0; r < step; ++r) { for (int c = 0; c < step; ++c) { table[i + step + r][j + step + c] = table[i + r][j + c]; } } for (int r = 0; r < step; ++r) { for (int c = 0; c < step; ++c) { table[i + r][j + step + c] = table[i + step + r][j + c]; } } } } } for (int i = 0; i < n; ++i) { for (int j = 0; j < n; ++j) { cout<<table[i][j]; if (j<n-1) cout << " "; } cout << "\n"; } } int main() { int m; if (cin >> m) { solve(m); } return 0; }
- 1
信息
- ID
- 472
- 时间
- 1000ms
- 内存
- 256MiB
- 难度
- 4
- 标签
- 递交数
- 48
- 已通过
- 24
- 上传者