赛马问题

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名捏?他们之间是不是存在什么关系?(深感数学好才是王道)

 

 

 

你可能感兴趣的:(赛马问题)