前段時間面試的時候來了兩道邏輯題,一道粗細不均勻的繩子燒出15分鐘,比較簡單,思考了下就過了。但是這道關於馬的,想了很久感覺都沒有乙個好的解法。
回來之後看了下,這道題據說是google的題,原題是選出最快的三匹馬。看了一下,大受啟發。三匹馬需要七次。我先貼一下我的結論,我這邊算出來的結果五匹馬應該是9次。
先說下步驟,這道題的演算法我還沒歸納出來,但是解法頗有些頭腦風暴的感覺。首先先選出第一名,然後在第一名附近找出符合的第二三名,選出來之後再在後面選。頗有點動態規劃的感覺,可惜我不會動態規劃qaq,實在太笨了。
25匹馬,分成5組比拼,取每組第一名出來再跑一局。這樣選出來的第一名是不是妥妥的第一名。先把馬編號,分成abcde五個組,後面跟乙個數字表示每一組的馬的排名。比如a1就是a組第一名,應該比較好理解。如下圖,
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
上圖是角逐五次之後的編號,然後每組第一名們再進行一場比賽,排名就暫定為a1>b1>c1>d1>e1。這是個必然情況嘛,所以a1當之無愧的是第一名。
也就是六次比賽後選出了第一名,接下來那我們選二三名,找到所有距離a1距離為兩格的點,分別是a2,a3,b1,b2,c1。很湊巧,剛好只有五匹馬,再跑一次,取出前兩名。那就是最快的三匹馬了。這個時候進行了七次比賽。
這個時候,就需要頭腦風暴一下了,a2>a3,b1>b2&&b1>c1,也就是說a1,b1至少有乙個是前三。那麼兩兩分組,三四名可能是a2,a3和a2,b1和b1,b2和b1,c1。當然還要選出這裡最後一名的馬,因為這是不算第一的五匹馬排名,算上第一的話,第五名起碼在六名開外了,所有慢於他的馬都不用管了,最後一名可能是a3,b2,c1。
然後來分類討論,一種一種來,首先是a1,a3。
如果他們是二三名,那麼剩下的有競爭力的對手就是a4,a5,b1,b2,c1了。剛好五匹馬,就不考慮什麼淘汰不淘汰了,直接跑選出前兩名,前兩名就是四五名。這樣的話次數只要+1就好了,也就是8次。
然後下一種,a2,b1。這種的話,對手就多了,a3,a4 b2,b3 c1,c2,d1。整整七匹馬,然後這個時候就考慮一下剛剛被淘汰的最後一名,分別是a3,b2,c1。好,如果是a3,那麼a3,a4直接出局,同理,b2的話,b2,b3出局,c1的話後面一坨都沒了,這樣剪一下,剩下的馬只有4-5匹。所以再跑一次取前二,這種也是8次。
然後我做到這裡感覺找到了真諦,直接想當然的以為是8次,殊不知,既然窮舉就要窮舉到底。
當是b1,b2的情況出現時,參賽選手加到了a2,a3, b3,b4 ,c1,c2,d1。也還是七個人,如果上一輪墊底是c1,那麼只有四馬要比,可是,如果是a3,那麼還有六匹馬,這個時候就需要第二輪了。反正目前沒用小聰明發現有什麼地方可以省的。那就是要+2了
接下來是b1,c1。參賽選手有a2,a3 b2,b3, c2,c3 d1,d2,e1。這次有九位了。九位數選出前二應該需要三次以上了,不過好在剛剛選了最後一名,a3或b2,起碼淘汰掉一匹馬。八名選前二就比較簡單了,先五匹馬比賽,把最菜的三匹換成剩下的三匹,選出前兩名。所以也還是要+2.
綜上,三匹和五匹之間需要再比兩次。選出三匹是7次,那麼選出5匹我的答案是9次。
25匹馬 5條賽道 選出最快的幾匹
此問題分兩類,一種是選出最快的5匹 一種是選出最快的3匹。注意,這裡只要求列出最快的5匹馬,不需要給出它們五個的排序 冠亞季殿x 所需要比賽的場次根據分組的 均勻程度 而不同 最少需要比賽7場,最多需要8場。網上有人說的要賽9場,他們預設是要給出5匹的排名 冠亞季殿x 方法如下 得到下面的編號 a1...
64匹馬,8個賽道,找出跑得最快的4匹馬
全部馬分為8組,每組8匹,每組各跑一次,然後淘汰掉每組的後四名,如下圖 需要比賽8場 取每組第一名進行一次比賽,然後淘汰最後四名所在組的所有馬,如下圖 需要比賽1場 這個時候總冠軍已經誕生,它就是a1,藍色區域 它不需要比賽了 而其他可能跑得最快的三匹馬隻可能是下圖中的黃色區域了 a2,a3,a4,...
64匹馬,8個賽道,找出跑得最快的4匹馬
64匹馬,8個賽道,找出跑得最快的4匹馬,至少比賽幾場?第一步全部馬分為8組,每組8匹,每組各跑一次,然後淘汰掉每組的後四名,如下圖 需要比賽8場 第二步取每組第一名進行一次比賽,然後淘汰最後四名所在組的所有馬,如下圖 需要比賽1場 這個時候總冠軍已經誕生,它就是a1,藍色區域 它不需要比賽了 而其...