2018百度運維崗秋招面試題:36匹馬6跑道快速找出前三名
阿新 • • 發佈:2019-02-06
36匹馬賽跑,跑道同時只能容許6匹馬。問最少跑多少次可以找出前三名
這道題是在2018年秋招百度面試官給我的問題,我投的是運維研發,要求是程式設計實現,很顯然沒有計時器不然還有啥問的,發部落格也希望有大佬給出合適的解答互相探討學習一下。
這只是我面試完了之後結合網路和自己所想的一些思路:
首先對36匹馬進行分組: A1,A2,...,A6; B1,B2,...,B6; C1,C2,...,C6; D1,D2,...,D6; E1,E2,...,E6; F1,F2,...,F6; 將第一組中的3匹優勝馬按A1,A2,A3取出,其中A1最快,同理第二組B1,B2,B3,直到F1,F2,F3。這樣總共跑了6次。 第二步,讓每支隊伍的第一名在一起跑,取前三名,假設結果是A1>B1>C1>D1>E1>F1 那麼A1肯定是整體的第一名, 下來只需要找出第二名和第三名: 因為馬的數量是有限的,基於第一和第二步,我們可以推出可能成為第二的馬A2,B1, 有可能成為第三的馬有A3,B2,C1,一共五匹。 讓這五匹馬一起跑,選出前兩名,就分別是整體的第二和第三名。 總結:總共跑了6+1+1=8次