百度面试题之赛马


题目:有36匹马和一条6赛道的跑马场,没有计时器,请用最少的比赛轮次挑选出最快的3匹马。


因为没有计时器,所以不同马之间都要比一比。不过,我们的任务是选出最快的3匹而不是排序,所以要尽量减少比赛轮次,那么:1、比过的马不用再比;2、已知跑得慢的马也不用再次参加了。有了上面这两条原则做指导,解决起来不是特别困难。下面我给出我的方案。


1. 36匹马分为6组,比赛6次,取出每次最快的前三名。为什么要取前三名呢,因为最快的3匹马被分在同一组也是有可能的。下面比赛后的结果
第一组       01 > 02 > 03

第二组       04 > 05 > 06

第三组        07 > 08 > 09

第四组       10 > 11 > 12

第五组       13 > 14 > 15

第六组       16 > 17 > 18

2. 让每组的第二名比赛,跑第一的马所在的组得以保留,剩下的组的第二、三名被淘汰。假设第一组的02跑第一:
第一组       01 > 02 > 03

第二组       04

第三组        07

第四组       10

第五组       13

第六组       16

3. 接下来,让03、04、07、10、13、16比赛。如果

    03得了第一名,那么跑得最快的三匹是01 02 03
    03得了第二名,那么跑得最快的三匹是v1  01 02      
    03得了第三名及其以后,很么直接让 v1  v2  v3  01  02 再比赛一次,取得最终的前三名。

所以总共需要比赛6 + 1 + 1 + (1) = 8次或9次。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值