切換
舊版
前往
大廳
主題

ZeroJudge - a826: 4.天氣預測問題 解題心得

Not In My Back Yard | 2020-09-23 00:06:45 | 巴幣 4 | 人氣 189

題目連結:


題目大意:
定義氣溫 < 20 度時,代表為「cool」;氣溫為 ≧ 20 度且 < 28 度時,代表「mild」;氣溫 > 28 度時,代表「hot」。濕度 < 30% 時,為「dry」;濕度 ≧ 30% 且 < 60% 時,為「normal」;濕度 > 60% 時,定為「high」。也就是氣溫以及濕度各三個等級。

現在輸入第一列給定一正整數 N (N ≦ 5),代表預測富翁是否出去打球的規則數量。

接下來的 N 列,每列依序給定(每個輸入之間由一個空白字元隔開)一個字母(只會是「T」或是「H」),接著一個字串(只會是上面所定義氣溫以及濕度之名詞),最後再一個字母(只會是「Y」以及「N」),代表一條規則要以氣溫還是濕度作為判斷,並且氣溫(或是濕度,端看前面的選項)要是什麼等級,且若符合此條規則,則預測結果為何。

最後一列給定兩正整數 X 、 Y (X ≦ 40 、 Y ≦ 90),代表今天的氣溫為 X 度、濕度為 Y% 。

規則由給定的順序編為第 1 個 ~ 第 N 個。由第 1 個開始判斷,如果氣溫或濕度不符合規則,則往下一條規則判斷,以此類推。如果有任何一條符合,則預測結果則是最早符合的那一條規則之結果。

然後給定前十天的天氣狀況以及富翁的打球狀況:

試問給定的 N 個規則對於上面的前十天的情況之預測正確數,以及今天的氣溫、濕度符合第幾個規則(都不符合,則為 0)和今天的預測打球情況(規則都不符合,則預設為「N」)。



範例輸入:
輸入範例一:
2
H dry Y
T hot N
30 50

輸入範例二:
2
T mild Y
T hot N
25 30


範例輸出:
輸出範例一:
8
2
N

輸出範例二:
9
1
Y


解題思維:
就是單純的流程模擬題。



將所有的規則要判斷是氣溫還是濕度、氣溫或濕度的等級,以及預測結果通通用陣列存起來(可以全部存成字串)。然後將給定的前十天之表格也打成陣列形式(一樣可以統一為字串形式,等等比較好比較)。

再對前十天的每一天之氣溫、濕度之情況去與規則判斷(從第 1 條跑到第 N 條規則),有符合的就與真實情況比較。預測與真實相同的就將一計數之變數(一開始為 0) + 1;反之,則不 + 1。十天都跑完之後,輸出計數變數之值。

然後將輸入的今天之氣溫和濕度根據定義轉成對應的等級,之後同上去跑過規則。如果有符合的就,輸出該規則之編號,以及該規則之預測;如果跑完規則後,發現沒有一個符合的,則輸出 0 以及「N」。




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

創作回應

相關創作

更多創作