题解
输出数字矩形
1 条题解
-
0
解题思路
要求输出一个 n 行 m 列的矩形,每行都是 1 2 3 … m。这需要用到"循环套循环"(也叫双重循环):
- 外层循环控制行数:i 从 1 到 n;
- 内层循环控制每一行输出什么:j 从 1 到 m,把 j 依次输出;
- 内层循环结束后输出一个换行,开始下一行。
这样外层每转一圈就输出一行,一共输出 n 行;内层每转一圈就输出一个数字,一行有 m 个数字。
注意:题目样例中每行的数字之间没有空格,是连着输出的(123),所以代码里直接 cout << j 即可。输出完一行要 cout << endl 换行,否则所有数字会挤在同一行。
参考代码
#include <iostream> using namespace std; int main() { int n, m; // n:行数;m:列数 cin >> n >> m; // 读入行数和列数 for (int i = 1; i <= n; i++) { // 外层循环:控制行数 for (int j = 1; j <= m; j++) { // 内层循环:控制列数 cout << j; // 输出当前列的数字 j } cout << endl; // 这一行输出完,换行 } return 0; }复杂度分析
外层循环执行 n 次,内层循环每次执行 m 次,总共输出 n×m 个数字,所以时间复杂度是 O(n×m)。这里 n 是行数、m 是列数,总工作量正好等于矩形的格子数。空间上只用 n、m、i、j 几个变量,空间复杂度 O(1)。
- 1