今天看到一个赛马速度的问题
一个赛场中有5条赛道,现在有25匹马,在没有定时器的前提下最少跑多少圈可以角逐出前三名?
一
我一开始的设想是先组成5组,跑5次,决出各组第一名,再5匹马跑一次,决出一二三名
只需要6场
但是如果第一二三名恰好都在同一组呢,那么二三名不就在第一轮被淘汰了?
二
然后我又改进了一下,把每轮的第一二三名抽出来,组合一下在一起,再进行比较,那就要进行十一轮,因为一轮淘汰两匹马,淘汰二十二匹,那就是剩下前三名了
但是我觉得应该还可以更少吧
于是查了一下相关文献
得出更优化的方案
三
将所有马分为5组进行比赛, 选出5个第一名, 然后进行比赛, 确定一个, 并把第一名取走, 再从第一名的队列中, 选择第二名, 放入其中, 进行比赛。之后,在出现第二名的组内,选择次一名的,再进行比较,只需要8场就行
详细解说一下:
首先比五场,得出各组名次
那么各组第一名再进行比赛,假设第三组第一名得胜,那么全场第二名应该出自这些黄色区域
假设第二名是第二组第一名,那么全场第三名应该出自绿色区域
所以最少需要8场