64匹马如此赛,岂不更好?

202 阅读4分钟

今天我们来看这样的一道面试中常问的逻辑题:总共有64匹马,8个赛道,那么请问最少需要比赛几场可以找出最快的4匹马?

    我们先不讨论答案如何,在这里先从以下几步来一步步分析问题:

01分8组分别比赛

    首先,我们将64匹马分为八组,每组8匹马使用8个赛道比赛一次,这样在各自组内就有了一个快慢的排名。因为8个组都要赛一场,所以这里总共比赛了8场。假设比赛的结果如下图所示:

    在上图中这八个组分别是A,B,C,D,E,F,H,G;其组内的排名从上到下按照速度排为1-8名,排名越靠后的越慢。然后我们把每组的第一名拿出比一次,共8匹马正好用八个赛道,之后按照每组的第一名跑的快慢的成绩进行整组的一个排序,假如结果如下:

    各组第一名的排名为:

     A1>B1>C1>D1>E1>F1>H1>G1

     到目前为止我们已经比赛的场次为:8+1=9场。

 这里需要注意一下,从前面的比赛中我们只知道,每组内的排名顺序,以及每组第一名的排名顺序,并不知道组与组之间每匹马的具体排名。

02裁掉每组后4名

    其次我们要找的是跑的最快的4匹马,所以每一组的后4名就没有在继续比赛的必要了。所以接下来我们要关心下面这些马:

03裁掉靠后的4组

    同样的道理排名靠后的4组,也是没有机会入选前四的,因为前面4组每组的第一名都比后4组要快,所以我们继续缩小参赛的马儿的范围如下:

04再裁最后一次

     根据前面的比赛过程,我们可以知道:

                   A1>B1>C1>D1

                   A1>A2>A3>A4

    所以A1快于它下方,右下方,以及右方所有的马儿,即下图中的红色区域:

    B1也是如此:

    同理C1,D1也是如此就不一一展示。

那么:

1)D2,D3,D4没有机会竞争前4,因为已知的A1,B1,C1,D1都比它们快;

2)C3,C4没有机会竞争前4,因为已知的A1,B1,C1,C2都比它们快;

3)同理B4没有机会竞争前4。

总起起来就是下图中的红色区域的马儿不用参加比赛:

05选择比赛的马得出答案

    根据前面的分析已知A1是最快的,所以它不用参与比赛了。剩下A2,A3,A4,B1,B2,B3,C1,C2,D1;这里总共9匹马,从他们里面选出前3名,而我们只有8个赛道,只能先选择其中8个进行比赛。

    这里选择比赛的马儿有一个技巧,可能会减少一场比赛。我们选择B1不参加比赛,让A2,A3,A4,B2,B3,C1,C2,D1它们进行比赛。也就是下图中蓝色区域的马儿:

    因为前面已知B1是B1,B2,B3,C1,C2,D1他们中最快的,所以:

1)如果这次的比赛中前3名中含有B2,B3,C1,C2,D1其中任意一个的话,那么将第3名去除,把B1放进去,因为这里面总会有一个比B1慢。这样我们就找到了最快的4匹马。在此之前已经比了9场所以算上刚才比的1场,总共比了9+1=10场。

2)如果这次的比赛中B2,B3,C1,C2,D1都不在前3名中,那么这次比赛的前3名就是A2,A3,A4了。因为我们不知道B1与A2,A3,A4的快慢排名,所以这种情况下我们要再比一次就知道A2,A3,A4,B1他们中最快的前3名了;再加上A1就找出了最快的前4名马儿了。同样在此之前已经比了9场所以算上刚才比的2场,总共比了9+2=11场。

    因此如果要找出最快的4匹马要比10场或者11场。

今天的知识就分享到这里了,我们下期再见!

欢迎关注点赞,持续更新更多有趣知识!

\