# String Manipulation# Pattern Printing

c420 - Bert的三角形 (3)

🔗 前往 ZeroJudge 原題

題目描述

題目要求輸出一個由星號 (*) 和底線 (_) 組成的金字塔形狀,金字塔的層數由輸入的整數 n 決定。金字塔的每一層星號數量為 2*i - 1,其中 i 是層數。金字塔需要居中對齊,使用底線填充空白部分。

解題思路

此題主要考驗對迴圈結構的運用以及字元輸出控制。程式邏輯如下:

  1. 讀取輸入的整數 n,表示金字塔的層數。
  2. 使用外層迴圈遍歷每一層,從第一層到第 n 層。
  3. 在每一層內部,使用內層迴圈輸出底線和星號,以形成金字塔的形狀。
  4. 底線的數量計算方式為 n - i,星號的數量計算方式為 2*i - 1
  5. 輸出每一層後換行,以形成金字塔的層次結構。

複雜度分析

  • 時間複雜度: 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;
		}
		
	}
	
	
}

Discussion