百度面试题之赛马

很久没冒泡了。今天听到一道百度面试的智力题,想到了一个答案,逐与大家分享之。



题目:有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. 让每组的第二名比赛,假设比赛的成绩是按下面排序的。其中背景为紫色的都是无法进入前三名的,被淘汰。

第一组
01 > 02 > 03
          ∨
第二组
04 > 05 > 06 
          
第三组
07 > 08 > 09
          
第四组
10 > 11 > 12
          
第五组
13 > 14 > 15
          
第六组
16 > 17 > 18

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次。


这就是我想到的方法,欢迎大家拍砖。

评论 46
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值