這是在網上見到的一道騰訊面試題
先說結論:
1. 計時的情況下需要比賽8輪;
2.不計時的情況下最少需要10輪,最多需要11輪。
1 用秒表計時的話,64匹分8組。 8輪就出來了
2:不能計時的情況下
先說下思路:
一:把64匹馬分8組,各跑一次,然后淘汰掉每組的后四名,這里淘汰后四名是因為只需要跑的最快的四匹馬。(花費8輪);
二:取每組第一名進行一次比賽,然后淘汰最后四名所在組的所有馬,因為后四名所在的組的第一名沒有跑過前四名的馬,所以可以直接淘汰。(+1輪);
還剩16匹,第一名已經出來了
這時候還剩下16匹馬,在這里其實可以繼續淘汰,因為D1是第九輪的第四名,但D1又是它3所在組的第一名,那么對應的D2,D3,D4都可以繼續淘汰掉。
但是第四名也可能出現在C2中,C2是所在組的第二名,那么C3,C4也可以淘汰了,同理,可以得到B4也可以淘汰了。到此為止還剩10匹馬,其中A1是64匹馬中跑的最快的馬,可以直接晉級。如下圖,其中有紅色斜線是已經被pass的:
第三:
A2、A3、A4、B2、B3、C1、C2、D1八匹馬跑一次,即:在剩下需要排名的馬中,除了B1外,其它8匹馬跑一次(+1輪)
分類討論:
1、如果這次排名,B2或C1能進前三名,則加上B1后,B1一定能進前三名,因為B1 排名比B2和C1都要靠前;
到此比賽可以結束了;這種情況8+1+1=10次出結果;
2、如果這次排名,B2或C1不能進入前三名,則需要再進行一次比賽,B1、A2、A3、A4進行,取前三名:
這種情況8+1+1+1=11次出結果。
結論:
1. 計時的情況下需要比賽8輪;
2.不計時的情況下最少需要10輪,最多需要11輪。
參考: