1 条题解

  • 0
    @ 2026-10-26 13:00:02

    思路与算法

    从第1行枚举到第n行,第i行构造i个星号并立即换行。每一行的输出数量由行号唯一确定,不需要额外计算几何位置。

    正确性说明

    第i行输出的字符恰好为i个星号,行末换行将它与下一行分开。循环恰好遍历1至n,所以输出n行,且第i行长度为i,满足左对齐直角三角形定义。n=0时没有行需要输出。

    复杂度

    输出字符总数为n(n+1)/2,时间O(n²),每行字符串的构造也计入该时间。当前行最多n个字符,额外空间O(n);初始变量O(1),不保存全部图案。

    易错点

    不要打印行首空格或额外的空白行。输出用半角*,每行i个而非n-i+1个。自然数0按零行处理。原题给n<20,测试覆盖1、19等边界。

    参考代码(C++11)

    #include <bits/stdc++.h>
    using namespace std;
    int main() {
        int n;
        cin >> n;
        for (int i = 1; i <= n; ++i)
            cout << string(i, '*') << '\n';
    }
    
    • 1

    信息

    ID
    1725
    时间
    1000ms
    内存
    64MiB
    难度
    入门
    标签
    递交数
    1
    已通过
    1
    上传者