1 条题解
-
0
思路与算法
从第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