查看原文
其他

漫画:挂掉面试官系列(25匹马经典面试题的完整分析)

程序员浩哥 小浩算法 2021-02-01



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


话不多说,直接看题。

0125匹马的经典问题

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

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


(只要一瞪,就会了)


02题目分析

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


分析过程:

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

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

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

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


(学会不要太感激我...)


03升级版本

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



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

  • 假若二三名分别为: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,问其过程,一脸懵逼。我希望看过这篇文章的朋友,下次遇到这个问题,能直接给出所有的分析结果,挂掉面试官毕竟我们这些懂得人,就是这样朴实无华且枯燥。



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


要和小浩做朋友或者想进学习群的小伙伴可以加我




长按左侧二维码

加小浩私人微信

(加我之前,

怎么得关注一下咯)









          关注领取

          算法视频一套

         《算法四》

        书籍一本



发现了吗?近日小浩已经将所有的广告都关掉了!也就是说,所有的文章,对我一点收入都不会有。我唯一想要的,就是大家可以顺手帮我转发,足够我高兴一整天。这也是支持我一直写下去的动力。我的文章,都是由我独自创作,排版,绘图,解题完成的,虽然已经很努力,但是有错误在所难免,如果大家发现,请谅解~ 最后,真心说句感谢。

    您可能也对以下帖子感兴趣

    文章有问题?点此查看未经处理的缓存