题解
【入门】数字走向VI
1 条题解
-
0
解题思路
这道题要求输出一个 N 行 N 列的方阵。和之前的题目不同,这一题的每一行都是从大到小倒着输出的。
举个例子,如果输入 5:
- 第 1 行:5 4 3 2 1
- 第 2 行:10 9 8 7 6
- 第 3 行:15 14 13 12 11
- 第 4 行:20 19 18 17 16
- 第 5 行:25 24 23 22 21
观察规律:第 i 行从 i×N 开始,每次减 1,一直减到 (i-1)×N+1。
所以我们可以用两层循环:
- 外层循环控制行数,i 从 0 到 N-1
- 内层循环控制列数,每行从 (i+1)×N 开始递减
参考代码
#include <iostream> #include <iomanip> using namespace std; int main() { int n; cin >> n; // 外层循环控制行数,一共输出 n 行 for (int i = 0; i < n; i++) { // 每行从 (i+1)*n 开始,依次减 1 // 比如 n=5,第一行从 5 开始:5 4 3 2 1 // 第二行从 10 开始:10 9 8 7 6 int num = (i + 1) * n; for (int j = 0; j < n; j++) { cout << setw(3) << num; num--; } cout << endl; } return 0; }复杂度分析
- 时间复杂度:O(N²),两层循环各执行 N 次
- 空间复杂度:O(1),只用了几个变量
- 1