top1编程
← 返回题目
题解

输出数字矩形

1 条题解

  • 0
    @ 2026-8-5 0:22:41

    解题思路

    要求输出一个 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