切換
舊版
前往
大廳
主題

ZeroJudge - e664: 108 p2. 空氣盒子 解題心得

Not In My Back Yard | 2020-08-16 00:00:05 | 巴幣 2 | 人氣 194

題目連結:


題目大意:
給定 N 個正整數(29 ≦ N ≦ 31 ,且每個給定的正整數不超過 100),代表這一個月內第 1 天、第 2 天、……、第 N 天之二氧化碳濃度。請找出所有的高峰值。

高峰值定義為:該值(如果是連續的相同值,則是該「群」)比前一個值以及後一個值兩者高,因此第一天以及最後一天絕不會是高峰值發生日,因為缺少前後其中一者作比較。

輸出格式為高峰值發生日(如果是連續的高峰值,則輸出起始日以及結束日之值),並接著該天的二氧化碳濃度之值。參見範例輸出。



範例輸入:
輸入範例一:
48 52 47 46 44 42 43 44 47 49 44 43 39 40 40 36 31 36 36 37 42 51 59 62 62 67 75 70 66 69 70

輸入範例二:
30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58


範例輸出:
輸出範例一:
2 52
10 49
14 15 40
27 75

輸出範例二:
0 0


解題思維:
用兩個整數變數代表前一個值的天數、以及現在的值之天數,以及另外三個整數變數代表前一個值、現在的值以及後一個值。

首先輸入前兩個數字,當作前一個值以及現在的值之初始化。接著,每次輸入一個新數字作為後一個值,判斷現在的值與後一個值的關係。如果相同就繼續輸入下一個數字,並將天數 + 1;反之,判斷現在的值是否比前一個值和後一個值都還要高。

如果是就輸出目前的天數(如果目前天數跟前一個值的天數差 1 以上,代表這是連續的高峰值,所以要輸出起訖日)以及現在的值。

最後在上述判斷的後面將前一個值變為現在的值、現在的值變為後一個值(因為要移動到下一個值,所以現在會變成前一個,後一個變成現在的),並將前一個值的天數變為當前天數,並將當前天數 + 1。




此次分享到此為止,如有任何更加簡潔的想法或是有說明不清楚之地方,也煩請各位大大撥冗討論。

創作回應

相關創作

更多創作