# 腾讯面试题

# 算法

# 64匹马、8赛道,至少多少轮比赛找出速度最快的4匹马?

参考答案

一共需要比赛的场次:10场或者11场 8 + 1 + 1 + 1 = 11 场或8+1+1=10场 10场合11场前面的两次比较都是一样的主要区别在于最后两场的比较。

  • 第一步,全部马分为8组,每组8匹,每组各跑一次,然后淘汰掉每组的后四名,如下图(需要比赛8场)。
  • 第二步,取每组第一名进行一次比赛,然后淘汰最后四名所在组的所有马,如下图(需要比赛1场) 原因是:该组最快的马也不能跑进前4名那么该组所有的马都不是前4名的马匹。同时也能知道在这次比赛中跑最快的一定是所有马匹的冠军。
  • 第三步,只要从上面的9匹马中找出跑得最快的三匹马就可以了