c420 - Bert的三角形 (3)
題目描述
題目要求輸出一個由星號 (*) 和底線 (_) 組成的金字塔形狀,金字塔的層數由輸入的整數 n 決定。金字塔的每一層星號數量為 2*i - 1,其中 i 是層數。金字塔需要居中對齊,使用底線填充空白部分。
解題思路
此題主要考驗對迴圈結構的運用以及字元輸出控制。程式邏輯如下:
- 讀取輸入的整數
n,表示金字塔的層數。 - 使用外層迴圈遍歷每一層,從第一層到第
n層。 - 在每一層內部,使用內層迴圈輸出底線和星號,以形成金字塔的形狀。
- 底線的數量計算方式為
n - i,星號的數量計算方式為2*i - 1。 - 輸出每一層後換行,以形成金字塔的層次結構。
複雜度分析
- 時間複雜度: O(n^2)
- 空間複雜度: O(1)
程式碼
#include <iostream>
using namespace std;
int main (){
int n=0;
while(cin >> n){
for(int i=1;i<=n;i++){
for(int k=n-i;k>0;k--){
cout << '_' ;
}
for(int j=1;j<=i;j++){
cout << '*' ;
}
for(int j=2;j<=i;j++){
cout << '*' ;
}
for(int k=n-i;k>0;k--){
cout << '_' ;
}
cout << endl;
}
}
}