賽馬比賽--25匹馬5個跑道,怎樣選出最快的5匹來


題目一(網易筆試題):25匹馬5個跑道,怎樣選出最快的5匹來?最少的次數

題目二(2016美團校招筆試題):30個馬賽跑,5個跑道,找出前五名,至少找幾次

題目三:64匹馬,8條跑道,分幾次可以選出最快的4匹?


********** ********** ********** ********** ********** **********

題目一:最多10次

題目二:最多12次

題目三:最多13次


********** ********** ********** ********** ********** **********

以題目一為例:

Step1:

先將25匹馬按5條跑道分組:

1 24 22 2 16

6 19 3 9 7

11 8 10 14 15

12 17 18 13 20

21 5 23 4 25

將以上5組馬分別進行比賽並排序。【比賽總次數:5】

24 22 16 2 1

19 9 7 6 3

15 14 11 10 8

20 18 17 13 12

25 23 21 5 4


Step2:

將最快馬匹數(TopCount)除以賽道數(TrackCount)取整得到GroupCompIndex,即每組馬匹中第幾名應該進行第6場比賽。

GroupCompIndex = TopCount/TrackCount=5/5=1 (取每組的第二名進行比賽)

22 9 14 18 23

比賽結果為【23 22 18 14 9】 【比賽總次數:5+1=6】


依據第六場比賽結果Step1中的5組比賽進行排名:

第1組:25 23 21 5 4

第2組:24 22 16 2 1

第3組:20 18 17 13 12

第4組:15 14 11 10 8

第5組:19 9 7 6 3


依據上表分析:

第1組的第GroupCompIndex名肯定是前6名,因為比第1組的第【GroupCompIndex】名快的只有每組的第一名。【最重要的依據,遇到TopCount > GroupCompIndex * TrackCount第GroupCompIndex名肯定也是Topn

第1組的第0..GroupCompIndex名(不包含GroupCompIndex)肯定是前5名,因為比第1組的第【GroupCompIndex】名大的只有最多5名。【獲得Top5數據:25】

查找剩余的可能是Top4的成員列表

針對第n組,存在(【GroupCompIndex】+ 1)* (n - 1) 匹馬比當前組的第【GroupCompIndex】匹馬快。

也就是當前組有 TopCount - (【GroupCompIndex】+ 1)* (n - 1) 匹馬是Top5或者比第【GroupCompIndex】名快的未進行比賽賽馬可能是Top5

例如:

第1組TopCount - (【GroupCompIndex】+ 1)* (1 - 1) = 5-2*0 = 5;所以所有成員都有可能是Top4:【23215 4】

第2組TopCount - (【GroupCompIndex】+ 1)* (2 - 1) = 5-2*1 = 3;所以成員【242216】都有可能是Top4

第3組TopCount - (【GroupCompIndex】+ 1)* (3 - 1) = 5-2*2 = 1;所以成員【20】都有可能是Top4

第4組TopCount - (【GroupCompIndex】+ 1)* (4 - 1) = 5-2*3 = -1,小於0取本組第【GroupCompIndex】之前的馬;所以成員【15】都有可能是Top4

第5組TopCount - (【GroupCompIndex】+ 1)* (5 - 1) = 5-2*4 = -3,小於0取本組第【GroupCompIndex】之前的馬;所以成員【15】都有可能是Top4

由此得到Top4的列表:

23 21 5 42422 16 20 15 19

再按照Step1,Step2進行遞歸運算,直到只存在一組時,直接取錢Topn




Top4分組:

23 21 5 4 24

22 16 20 15 19

Top4分組排序: 【比賽總次數:6+2=8】

24 23 21 5 4

22 20 19 16 15

按照GroupCompIndex:2進行比較【21,19】 排序兩組 【比賽總次數:8+1=9】【獲得Top5數據:25,24,23】

24 23 21 5 4

22 20 19 16 15


Top2分組:

21 5 4 22 20

Top2分組排序:

22  21  20  5 4      【比賽總次數:9+1=10】【獲得Top5數據:25,24,23,22,21】


注意!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系我们删除。



 
粤ICP备14056181号  © 2014-2020 ITdaan.com