TOJ 110
題目
https://toj.tfcis.org/oj/pro/110/
第一行有一個正整數數 $n$,接下來有 $n$ 行,每行有一個數,表示三角形的高度
請依照題目的樣子輸出六芒星
例如 $n = 4$ 時輸出
1 2 3 4 5
| * ******* ***** ******* *
|
$n = 5$ 時輸出
1 2 3 4 5 6 7
| * *** ********* ******* ********* *** *
|
想法
把六芒星拆成上面的三角形、中間三個橫線、下面的三角形來輸出
Code
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52
| #include<iostream> using namespace std; int main(){ int n,m; cin>>n; while(n--){ cin>>m; for(int i=0 ; i<m-3 ; i++){ for(int j=0 ; j<m-1-i ; j++){ cout<<' '; } for(int j=0 ; j<(i+1)*2-1 ; j++){ cout<<'*'; } cout<<'\n'; } for(int i=0 ; i<2*m-1 ; i++){ cout<<'*'; } cout<<"\n "; for(int i=0 ; i<2*m-3 ; i++){ cout<<'*'; } cout<<"\n"; for(int i=0 ; i<2*m-1 ; i++){ cout<<'*'; } cout<<'\n'; for(int i=0 ; i<m-3 ; i++){ for(int j=0 ; j<3+i ; j++){ cout<<' '; } for(int j=0 ; j<(m-3)*2-1-2*i ; j++){ cout<<'*'; } cout<<'\n'; } } return 0; }
|
複雜度分析
總時間複雜度約為 $O(n(2m^2 + 3m))$ 約為 $O(nm^2)$