算法題-25匹馬,找出最快的3匹,最少需要多少次比賽


筆試題:25匹馬,找出最快的3匹,但是只有5個賽道,每次比賽只能得到5匹馬的速度排序,那么最少需要多少次比賽?

答案:7

分析:

1-5 場:

將25匹馬分為5組,每組5匹,得到下面的排序,假設每組最快的馬在左側,即X1、X6、X11、X16、X21分別是每組中最快的。

組1:X1    X2    X3    X4    X5
組2:X6    X7    X8    X9    X10
組3:X11  X12  X13  X14  X15
組4:X16  X17  X18  X19  X20
組5:X21  X22  X23  X24  X25

但是,現在還不能說最快的3匹馬在X1、X6、X11、X16、X21中,因為有可能最快的3匹馬全部分在第一組中,即有可能出現X2比X6快。

但是我們肯定可以知道每組的最后2名肯定不會是最快的3匹馬(假如某組的前三名是最快的,就沒后兩名什么事了~)

那么排除X4、X5;X9、X10;X14、X15;X19、X20;X24、X25

第6場:此時共這些參賽的馬,挑選每組中的第一名參賽

X1    X2    X3
X6    X7    X8
X11  X12  X13
X16  X17  X18
X21  X22  X23

參賽的為每組的第1名:X1、X6、X11、X16、X21,假設速度排序為X1、X6、X11、X16、X21。

那么我們可以知道,前三名有可能是最快的三名,所以后兩名基本走遠了(x16、 x21),X16、X21及其后面的X17、X18;X22、X23均不可能是最快的3匹馬。

第7場:因為x1是上輪所有比賽中最快的,假如6是跑的第二快的,那8后面的8基本也走遠了,因為1、6都比11快,所以11那一組只能是11為第三名,11后面的12、13也走遠了。去掉1,淘汰掉8、12、13,此時剩2、3、6、7、11來參加比賽

X1  X2   X3
X6  X7   X8
X11 X12 X13

目前,我們可以知道,X1是25匹馬中最快的,但是X2、X6、X3、X7、X11之間的速度還不確定,需要再一次比賽,而X8、X12、X13不可能是最快的前3名。

參賽的為:X2、X6、X3、X7、X11,速度最快的2匹加上X1構成最快的3匹馬。

因此一共需要7次比賽。


原文鏈接:https://blog.csdn.net/shayne000/article/details/97635105


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM