1. 程式人生 > >2018百度運維崗秋招面試題:36匹馬6跑道快速找出前三名

2018百度運維崗秋招面試題:36匹馬6跑道快速找出前三名

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次