题解
【入门】斜角II
1 条题解
-
0
解题思路
这道题要求输出一个 N 行 N 列的方阵,每个位置的值由 i+j 决定。
观察规律:
- 左上角 (0,0) 和右下角 (4,4) 是最小值 1
- 右上角 (0,4) 和左下角 (4,0) 是最大值 5
- 越往反角线 (i+j=n-1) 靠近,值越大
可以发现:第 i 行第 j 列的值取决于 i+j 离 0 或 2(n-1) 哪个更近。
参考代码
#include <iostream> #include <iomanip> using namespace std; int main() { int n; cin >> n; for (int i = 0; i < n; i++) { for (int j = 0; j < n; j++) { // 计算 i+j 到中间 (n-1) 的距离 // 距离越近,值越大 int s = i + j; int d = s; if (s > n - 1) d = 2 * (n - 1) - s; cout << setw(3) << (d + 1); } cout << endl; } return 0; }复杂度分析
- 时间复杂度:O(N²)
- 空间复杂度:O(1)
- 1