面试常考题 浅谈 赛马问题

题目

一共有25匹马,有一个赛场,赛场有5个赛道,就是说最多同时可以有5匹马一起比赛。假设每匹马都跑的很稳定,不用任何其他工具,只通过马与马之间的比赛,试问,最少得比多少场才能知道跑得最快的5匹马?

思考

朴素想法

最朴素的想法,就是

  1. 分为5组 组内跑一次
  2. 5个组的组内第一 跑一次
  3. 然后接下来就跟优先队列一样,每次跑之前被挑出去的组的后一个

所以这样的想法就是 5(组内跑)+5(一次能跑出一个top1) 10 次

优化思想

假设我们现在已经跑完top3了,假设top3是 (A1, A2, A3)
那么还剩 这5个可能是 top4 和 top5

A4, A5
B1 B2
C1

所以 最后 top4和top5一次就能跑完

所以 我能想到的就是 9次 跑出来top5

欢迎参与讨论

posted @ 2019-09-08 13:38  Draymonder  阅读(732)  评论(4编辑  收藏  举报