64匹马8个跑道最少需要多少轮才能选出最快的4匹马?

这是在网上见到的一道腾讯面试题

先说结论:
  1. 计时的情况下需要比赛8轮;
  2.不计时的情况下最少需要10轮,最多需要11轮。

1 用秒表计时的话,64匹分8组。 8轮就出来了

2:不能计时的情况下

先说下思路:

一:把64匹马分8组,各跑一次,然后淘汰掉每组的后四名,这里淘汰后四名是因为只需要跑的最快的四匹马。(花费8轮);

二:取每组第一名进行一次比赛,然后淘汰最后四名所在组的所有马,因为后四名所在的组的第一名没有跑过前四名的马,所以可以直接淘汰。(+1轮);

还剩16匹,第一名已经出来了

这时候还剩下16匹马,在这里其实可以继续淘汰,因为D1是第九轮的第四名,但D1又是它3所在组的第一名,那么对应的D2,D3,D4都可以继续淘汰掉。

但是第四名也可能出现在C2中,C2是所在组的第二名,那么C3,C4也可以淘汰了,同理,可以得到B4也可以淘汰了。到此为止还剩10匹马,其中A1是64匹马中跑的最快的马,可以直接晋级。如下图,其中有红色斜线是已经被pass的:

第三:

A2、A3、A4、B2、B3、C1、C2、D1八匹马跑一次,即:在剩下需要排名的马中,除了B1外,其它8匹马跑一次(+1轮

分类讨论:

1、如果这次排名,B2或C1能进前三名,则加上B1后,B1一定能进前三名,因为B1 排名比B2和C1都要靠前;

     到此比赛可以结束了;这种情况8+1+1=10次出结果;

2、如果这次排名,B2或C1不能进入前三名,则需要再进行一次比赛,B1、A2、A3、A4进行,取前三名:

     这种情况8+1+1+1=11次出结果。

结论:

      1. 计时的情况下需要比赛8轮;

   2.不计时的情况下最少需要10轮,最多需要11轮。

参考:

https://blog.csdn.net/qq_44756792/article/details/103851500

原文地址:https://www.cnblogs.com/xiaokang01/p/12484983.html