有81個選手,9個賽道,要求選出前4名。最快需要多少場?

面試題目:

有81個選手,9個賽道,要求選出前4名。需要多少場?

不考慮計算具體成績,不然9場就夠了。


分析:

最直觀的解題步驟是:

1. 先將81個選手,分成9組進行比賽,每組都有9名選手。由於只需要選出前4名,則可從每組挑出前4名繼續比較,需要比賽人數爲36個

2. 將36個選手,分成4組進行比賽,每組仍舊是9名選手。繼續從每組挑出前4名,則需要比賽人數爲16個。

3. 將16個選手,分成2組進行比賽,每組是8名選手。繼續從每組挑出前4名,則需要比賽人數爲8個。

4. 將8個選手分成1組進行比賽,比完則決策出了最終的前4名。

>>>>>需要16場。但,這不是最優解。


回過頭來,仔細分析上面的步驟,看看是否有優化的空間。

上述解法的步驟1-4,都是基於每組最新比賽結果取前四名後繼續進行決策。

但,直接取每組前4名的做法是否能夠再細化呢,能否排除掉一些必然不是在81中前4的選手。

再進一步分析,針對第一步比完後的9組選手,如果我能知道哪些組偏強,則前4名必然在偏強的前四組裏面,這樣理論上能夠再過濾掉一些選手。

具體方法如下:

1. 先將81個選手,分成9組進行比賽,每組都有9名選手。比完後,每組中取第一名再比1場,此時9組中的第一名的排名也出來了,81個選手中排名前四的選手,必然在排名前四的組。

分析可發現:

最終的前1名,必然是排名第1組中的第1名。

最終的前4名可能是排名第1組中的前4名;

最終的2,3,4名,可能是排名第2組中的前3名;

最終的3,4名,可能是排名第3組中的前2名;

最終的第4名,可能是排名第4組中的前1名。

所以,此時取"排名第1中的第2,3,4名選手;排名第2中的第1,2,3名選手;排名第3中的第1,2名選手;排名第4中的第1名選手“再進行比賽,共9名選手,比1場後的前3名選手,則是前81名中排名在2,3,4的選手。

>>>>>只需要11場。



發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章