巢狀迴圈-三角形繪製2
題目:
出處:SA 流 C++ 競程修練心法
思考方法:
我先以 輸出3個#
為例子,下去推想。
輸出 1 個 #
輸出 2 個 #
輸出 3 個 #
輸出 2 個 #
輸出 1 個 #
分成 兩層來輸出
的話 則:
第一層
輸出 1 個 #
輸出 2 個 #
輸出 3 個 #
第二層
輸出 2 個 #
輸出 1 個 #
再來假設環節,
要做n次,所以 第一層的迴圈
即為 遞增:
1 | for (i=1;i<=n;i++>) { |
再來,是 # 的部分
所以:
1 | for(j=0;j<i;j++>) { |
合體,第一層就完成了!
1 | for (i=1;i<=n;i++>) { |
而當我們達到 輸出 n 次
的 # 時
我們要倒回去 , 即為 遞減
1 | for (i=n;i>0;i--) { |
接著處理 輸出 (n-1) 個 #
1 | for (j=0;j<i;j++>) { |
合體!
1 | for (i=n;i>0;i--) { |
將第一層與第二層合併
CODE
1 |
|
解題心得
- 我剛開始解這題,一直把它侷限在用一個大迴圈包數個小迴圈的巢狀結構去解。沒想到換個思路後,解起來比較輕鬆。
不要太過於執著一把幹到底 - 對於
巢狀迴圈
有更多的了解了! - 我解題會把迴圈拆的一個步驟一個迴圈去想,一次處裡多個迴圈我腦子會炸!
留言