题解
输出倒直角三角形
1 条题解
-
0
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