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