说明:n 为正整数,是直角三角形的高度和底边宽度。s 为符号,是组成图形的字符。 输出格式 n 行由 s 组成的直角三角形(参见输出样例)
时间: 2023-06-01 18:01:26 浏览: 142
算法1:暴力枚举
直接循环输出即可。
时间复杂度:$O(n^2)$
C++ 代码
```cpp
#include <iostream>
using namespace std;
int main() {
int n;
char s;
cin >> n >> s;
for(int i = 1; i <= n; i++) {
for(int j = 1; j <= i; j++) {
cout << s;
}
cout << endl;
}
return 0;
}
```
算法2:数学方法
观察输出样例,我们可以发现每一行的字符个数是从 $1$ 开始递增的,而且递增的规律是等差数列,公差为 $1$,因此可以使用等差数列求和公式 $S_n=\dfrac{n(a_1+a_n)}{2}$ 来计算每一行的字符个数。
时间复杂度:$O(n)$
C++ 代码
```cpp
#include <iostream>
using namespace std;
int main() {
int n;
char s;
cin >> n >> s;
int sum = 1;
while(sum <= n) { // 当前行的字符个数小于等于 n 时
for(int i = 1; i <= sum; i++) {
cout << s;
}
cout << endl;
sum = sum + 2; // 下一行的字符个数比当前行多 2
}
return 0;
}
```
阅读全文