25匹马的经典问题

今天为大家分享一道非常经典的面试题,和马有关。无论是校招,还是社招,在各大公司都出现过,我也曾经问过别人。

话不多说,直接看题吧。

01、题目示例

25匹马的问题
有一个赛场上共有25匹马,赛场有5个跑道,不使用计时器进行比赛(也就是每次比赛只能得到本次的比赛的顺序)

试问最少比多少场才能选出最快的三匹马?并给出分析过程!

02、题目分析

实在不想和那些答主一样,磨磨唧唧的分析完毕之后,再给你们扔出来正确答案。答案是7次,懂得走人,今日合格,咱不浪费时间。 懵对的和猜错的往下看,只会3匹马的也请往下看


分析过程:

  • 5次:首先我们把25匹马分成5组(A、B、C、D、E),跑上五次,得到每组的第一名。

    PNG

  • 1次:然后我们让这5个第一名跑上一次,得到其中的前三名。注意:这里就可以得到所有马中跑的最快的第一名A1了。并且,D1和E1所在的组可以直接淘汰。第二名和第三名一定不会在其中产生!

    PNG

  • 1次:因为我们已经跑出了第一名,所以A1不需要再参加比赛,同时,D1和E1所在的组已经淘汰。C1作为第三组的第一名,C组不会有跑的比C1快的。而B2有可能是比C1跑的快的第三名。同理,A2和A3也有可能是比B1和B2跑的快的。所以第7次比赛,我们让A2,A3,B1,B2,C1来一起完成。(求大家不要怪我啰嗦,,,我是实在担心有那么几个同学听不懂…)

    PNG

最终,我们通过7次比赛,得到25匹马中的前三名。

03、升级版本

还是25匹马,如果我们要找到其中跑的最快的前五名,最少需要比赛几次呢?(这里我想说一下,我看到网上有不少地方把这个题讲错了,所以不会的同学建议还是认真看一看)


在上面的的分析中,我们已经明确了第一名。但是第二名和第三名,是可以在A2-A3-B1-B2-C1中产生的,我们需要分别进行讨论。

PNG

  • 假若二三名分别为:A2,A3

    对于这种情况,第四名可能是A4,此时第五名是A5或者B1。第四名也可能是B1,此时第五名是B2或者C1。所以我们只需要让[A4,B1,A5,B2,C1]参加一次比赛,就可以得到前五名。

  • 假若二三名分别为:A2,B1

    对于这种情况,第四名可能是A3、B2、C1。假设第4名为A3,第5名可能为A4、B2、C1。假设第4名为B2,第5名可能为A3、B3、C1。假设第4名为C1,第5名可能为A3、B2、C2、D1。此时我们需要至少两次比赛,才能在[A3,A4,B2,B3,C1,C2,D1]中找到第四名和第五名,所以就需要9次。


其他的可能性还有:

  • 假若二三名分别为:B1,A2
  • 假若二三名分别为:B1,B2
  • 假若二三名分别为:B1,C1


上面这三种情况分析的方法一致,就不一一说明了,大概的思路就是,我们需要根据第三名,分析出可能的第四名再根据第四名,分析出对应情况下的第五名。最终再在这些马匹里,抉择出真正的第四名和第五名。


因为题中问的是最少比多少场可以跑出前五名。所以根据分析,假如第二名和第三名是A2和A3的话,只需要8次就可以跑出前五名。最少次数是8。(这个题目其实是不严谨的,所以如果有面试官问到这个题,最好是给出所有可能性的推导过程)


我看到很多答主有讲这道题,上来就给一个8,但是都没有说清楚原因。之前我去成电校招的时候,也问过一个学生这个问题,对方上来就给我一个8,问其过程,一脸懵逼。我希望看过这篇文章的朋友,下次遇到这个问题,能直接给出所有的分析结果,挂掉面试官毕竟我们这些懂得人,就是这样朴实无华且枯燥。


所以,今天的问题你听明白了吗?评论区留下你的想法吧!