#36. 戰犯是誰

簡單陣列模擬

時間限制 1000 ms ・ 記憶體限制 256 MB

題目描述

大里高中排球隊在 8/15 時對上大甲高工排球隊,戰況一度倒向大里高中的勝利。比賽過程中,Jason 在場邊隨手拿了張白紙,把每位球員失誤時的背號寫在紙上。而在第三節的比賽中,原本 14:10 的大好局面最終變成 16:18,遺憾輸給大甲。

Jason 身為曾經的隊員,感到非常沮喪且生氣,卻沒辦法從那張潦草的紙上親自找出戰犯是誰,想請各位幫助他寫一段程式找出戰犯是誰,讓他去處理這位學弟。

輸入格式

第一行一個整數 N,代表失誤的總次數。 第二行 N 個整數,依序代表每次失誤球員的背號。

限制

  • 1 ≤ N ≤ 1000
  • 1 ≤ 背號 ≤ 20

輸出格式

輸出失誤次數最多的背號。如果有多個背號並列最多次,輸出背號最小的那一個。

範例一

範例輸入:

5
4 13 11 4 4

範例輸出:

4

在這組測資中,失誤的背號依序是:4、13、11、4、4。 統計結果如下:

  • 背號 4 出現了 3 次
  • 背號 13 出現了 1 次
  • 背號 11 出現了 1 次

因此,背號 4 的失誤次數最多。題目要求輸出「失誤次數最多的背號」,所以答案就是 4。 如果有多個背號並列最多次,因為我們是按照背號由小到大檢查,所以會選出最小的那一個。這樣就能確保結果唯一且符合題目規則。

提示

這題的關鍵在於統計每個背號出現的次數。因為背號範圍固定在 1 到 20 之間,所以我們可以直接用一個陣列來記錄每個背號的出現頻率。

首先,建立一個大小為 21 的整數陣列(索引 0 不用,1~20 對應背號),並將初始值全部設為 0。接著,依序讀入每次失誤的背號,並在陣列中對應的位置加一。例如讀到背號 4,就讓 freq[4]++。

完成統計之後,再掃描整個陣列,找出出現次數最多的背號。如果有多個背號並列最多次,因為我們是按照背號由小到大檢查,所以自然會選到最小的那一個。

最後,輸出這個背號,就是題目要求的「戰犯」。

範例測資

範例輸入 1

5
4 13 11 4 4

範例輸出 1

4
請先登入後再提交程式碼

討論與題解

載入討論區…