一共有25匹马,有一个赛场,赛场有5个赛道,就是说最多同时可以有5匹马一起比赛。假设每匹马都跑的很稳定,不用任何其他工具,只通过马与马之间的比赛,试问最少得比多少场才能知道跑得最快的5匹马?
分组一:
一 | 二 | 三 | 四 | 五 |
1 | 6 | 11 | 16 | 21 |
2 | 7 | 12 | 17 | 22 |
3 | 8 | 13 | 18 | 23 |
4 | 9 | 14 | 19 | 24 |
5 | 10 | 15 | 20 |
25 |
分组二:
一 | 二 | 三 | 四 | 五 |
1 | 2 | 3 | 4 | 5 |
6 | 7 | 8 | 9 | 10 |
11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 |
21 | 22 | 23 | 24 |
25 |
第一步:找出NO.1
1.首先,让每个分组的马跑一次,找出每个组最快的;
2.然后将每个组最快的一起跑一次,决胜出NO.1;
在这里我们必须承认,6次决胜出NO.1是唯一解法,所有的8*8匹马8跑道或者是6*6匹马6跑道,都是N+1次决胜出NO.1。
最少解法的情况:
误区:
1.我们本来会认为第二种会是最优,因为刚好第六次赛跑的5匹马就是前五名;
2.但是,我们怎样才能知道这5匹就是前五名呢,毫无疑问我们先要排除出现分组一的情况:就是每个组的第二名有可能比其他组的第一名还要快。
3.那么我们就要让所有组的第二名跑一次,决胜出最快的,然后再拿最快的跟第六次赛跑中的最后一名比,如果刚好最后一名比最快的还快,那么第六次的五匹马就是前5名。
这样的次数是7次。
其实这种做法是最保险的,每次都要考虑每个组其他名次中最快的一名,正统的解法也是需要每次去这样解,每次都要去考虑剩余其他名次中最快的一名。
最快解:
1.其实这种东西就像是二维数组,行就是列。
2.我们可以考虑第六次的是前5名,为什么不考虑像分组一的情况,NO.1那一名的分组刚好是前5名?
3.由于我们之前的5次已经知道NO.1那一组的排名,那么我们只要把那一组最后一名用来跟第六次的第二名进行对比,发现它比第二名还快,那就是NO.1那个组都是前5名。
这样的次数是6次。
一 | 二 | 三 | 四 | 五 |
1 | 6 | 11 | 16 | 21 |
2 | 7 | 12 | 17 | 22 |
3 | 8 | 13 | 18 | 23 |
4 | 9 | 14 | 19 | 24 |
5 | 10 | 15 | 20 | 25 |
一 | 二 | 三 | 四 | 五 |
1 | 6 | 11 | 16 | 21 |
2 | 7 | 12 | 17 | 22 |
3 | 8 | 13 | 18 | 23 |
4 | 9 | 14 | 19 | 24 |
5 | 10 | 15 | 20 | 25 |