問題:一共有25匹馬,有乙個賽場,賽場有5個賽道,就是說最多同時可以有5匹馬一起比賽。假設每匹馬都跑的很穩定,不用任何其他工具,只通過馬與馬之間的比賽,試問最少得比多少場才能知道跑得最快的5匹馬?
思路: 先將25匹馬分成五組,進行五場比賽。第六場比賽可以考慮都取各個小組的第一名(或第二名)。假設都取各小組的第一名,根據這場比賽的排名,將原來的小組分別編號為a、b、c、d、e,並將原來的25匹馬分別編號為:
a1 b1 c1 d1 e1
a2 b2 c2 d2 e2
a3 b3 c3 d3 e3
a4 b4 c4 d4 e4
a5 b5 c5 d5 e5
其中xi,x表示組的編號,i為在該組的排名,則有:
a1 > b1 > c1 > d1 > e1
a1 > a2 > a3 > a4 > a5
b1 > b2 > b3 > b4 > b5
.......
e1 > e2 > e3 > e4 > e5
注意到:跑得比a3、b2、c1這三匹馬都快的只可能是a1、a2、b1,因而a3、b2、c1三匹馬中跑得最快的必然是前四之一。
因此,第七場比賽,這三匹馬必然參加,剩下兩個名額待定。先考慮這三匹馬的排名:
(下面用集合表示已確定是前五的馬,用{}集合表示剩下的馬中所有有可能是前五的馬。)
① a3 b2 c1 或 a3 c1 b2: 則 [a1, a2, a3] +
② b2 a3 c1: [a1,b1,b2] +
③ b2 c1 a3: [a1,b1,b2] +
④ c1 a3 b2: [a1,b1,c1] +
為了能在第八場確定前五,必須將上面的 和 的候選馬匹數減少到五匹,因而剩下的兩個名額必須是這兩個集合的重複元素,即是中的兩個。由於a2跑得比a3快,若選擇a2的話,不能利用前面的分析,因而剩下兩匹馬選擇 c2 和 d1。
第七場比賽:a3、b2、c1、c2、d1的前兩名是:
① a3: [a1, a2, a3] +
的前二名(由第八場比賽決定)
② b2 a3: [a1, b1, b2] + 的前二名
③ b2 c1: [a1, b1, b2] + 的前二名
④ c1 a3: [a1,a2,a3,b1,c1] (第七場就可確定前五)
⑤ c1 b2: [a1,b1,c1] + 的前二名
⑥ c1 c2: [a1,b1,c1,c2] + 的第一名
⑦ c1 d1: [a1,b1,c1,d1] + 的第一名
因而,最少七場比賽,最多八場比賽就可確定跑得最快的5匹馬。
25匹馬,5條賽道,找出最快的5匹馬
前段時間面試的時候來了兩道邏輯題,一道粗細不均勻的繩子燒出15分鐘,比較簡單,思考了下就過了。但是這道關於馬的,想了很久感覺都沒有乙個好的解法。回來之後看了下,這道題據說是google的題,原題是選出最快的三匹馬。看了一下,大受啟發。三匹馬需要七次。我先貼一下我的結論,我這邊算出來的結果五匹馬應該是...
25匹馬賽跑確定前五匹馬的問題
1 先看下條件 總共25匹馬,每個馬的狀態是穩定的,每場比賽最多只能有五匹馬進行賽跑。2 問題是至少要比賽多少場才能確定跑得最快的五匹馬?思路 1 我們用a e給五組馬編號,先分成五組,比賽五場,得到如下組內排序 5場 a a1,a2,a3,a4,a5 b b1,b2,b3,b4,b5 c c1,c...
25匹馬賽跑確定前五匹馬的問題
1 先看下條件 總共25匹馬,每個馬的狀態是穩定的,每場比賽最多只能有五匹馬進行賽跑。2 問題是至少要比賽多少場才能確定跑得最快的五匹馬?思路 1 我們用a e給五組馬編號,先分成五組,比賽五場,得到如下組內排序 5場 a a1,a2,a3,a4,a5 b b1,b2,b3,b4,b5 c c1,c...