赛马问题

25匹马,请找出最快的3匹。一次只能赛5匹,只能知道这5匹马的排序,没有秒表。力求用最少的操作。当你找到解决方案之后,你是不是可以换位思考以下,如果你是面试官,你会接下来怎么扩展这个问题?以后你面试时就会有备而来。

 

解答:

 

这个问题很简单,应为马的数量不多,我们一般会想到这么穷举一下。

 

如有25马命名如下:

    A1,   A2,    A3  , A4,    A5

    B1,   B2,   B3,   B4,   B5

    C1,   C2,  C3,   C4,   C5

    D1,   D2,   D3,   D4,   D5

     E1,   E2,   E3,   E4,   E5

 

应为要决出前三,每匹马肯定会都要赛一场,所以,ABCDE组马都分别各赛一场。就赛了5场。得出每组的第一名,比如为A1  B1 C1  D1  E1

 

他们在赛一次(6场)假设他们的名词为:

A1  > B1  >         C1  >       D1    >       E1

所以,我们确定,25匹马中的第一名为A1,倒数的十名为:D1~D5和E1~E5

 

但是,第二名我们不确定,因为存在可能

 A2>B1  or A2<B1  这两个中,可以判断谁是第二名,因为C1已经在B1后面了,无缘第二了

 

由此类推,C1无缘第二,但是可能为第三名

既然不确定的,刚好是前五名,让他们在赛一次即 第7次

A2    A3      B1     B2  C1

就能获得第二、第三名了

 

所以25匹马,需要7次才能决出前三。

 

 

    面试官一般不会这么好心,看着你穷举,接着会问,如果是250匹马捏?如果是N匹马捏?如果一次能同时赛M匹马的捏?如果要决出前X名捏?他们之间是不是存在什么关系?(深感数学好才是王道)

 

 

 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

北漂周

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值