top1编程
← 返回题目
题解

输出倒直角三角形

1 条题解

  • 0
    @ 2026-8-5 21:17:14

    P4402 输出倒直角三角形(入门)

    解题思路

    要输出 m 行 m 列的倒直角三角形,比如 m=5 时是: 第一行 5 个星,第二行 4 个星,第三行 3 个星……最后一行 1 个星。

    观察规律:第 1 行有 m 个星,第 2 行有 m-1 个,第 3 行有 m-2 个……第 i 行有 m - i + 1 个星。行数越靠后,星越少。

    用双重循环: 外层循环 i 从 1 到 m,表示第几行; 内层循环 j 从 1 到 m - i + 1,输出这一行所有的星; 一行输出完就换行。

    拿 m=5 举例:i=1 时内层循环 5 次,输出 5 个星;i=2 时输出 4 个星;i=3 时输出 3 个星;i=4 时输出 2 个星;i=5 时输出 1 个星。形状正好是倒直角三角形。

    边界情况:m 最小是 1,这时只有一行、一个星,代码也能正常处理;每行的星之间没有空格,直接连着打,行尾要换行。

    参考代码

    // 程序用途:输出m行m列由*组成的倒直角三角形
    #include <iostream>
    using namespace std;
    
    int main() {
        int m;
        cin >> m;
        for (int i = 1; i <= m; i++) {         // i:第几行
            for (int j = 1; j <= m - i + 1; j++)   // 第i行有m-i+1个星
                cout << "*";
            cout << endl;                      // 每行结束换行
        }
        return 0;
    }
    

    复杂度分析

    总星数是 m + (m-1) + ... + 1 = m × (m+1) / 2 个,所以时间复杂度是 O(m²);空间上只用循环变量,额外空间复杂度是 O(1)。

    • 1