前几天,学校 BBS 上有人提了一个小问题,本来没想做,后来看了看回文,不自觉的考虑了一下。

题目如下:
有 36 匹马,每次比赛只能有 6 匹马参加,最少进行几次比赛可以得到 36 匹马中跑得最快的前 6 名。限制有:1)没有表 (每次比赛只能记名次);2)每匹马的速度在任何比赛中速度不变。

我的思路:
1) 36 匹马分 6 组,每组 6 匹,进行初轮比赛,记录各组内部名次;
2) 根据初赛结果,把每组第 1 名组合到一起,比赛,记录名次,并给每匹马一个权值,权值和名次相同;
3) 按照初赛的结果和比赛 2) 的结果,为每匹马赋一个权值,规则是:每匹马的权值是它初赛所在组的前一名的权值 +6。比如某匹马初赛时在小组内得了第 4 名,而它所在的小组的第 1 名在比赛 2) 中得了第 5 名,则该马的权值为:
5[小组第 1 的权值] +6[小组第 2 的权值] +6[小组第 3 的权值] +6[小组第 4 的权值] = 23;
4) 选择当前权值 >1 的最小的 6 匹马比赛,记录名次,根据此次名次更新这 6 匹马的权值,然后根据此次名次和初赛结果更新其他马的权值 (不包括权值为 1 的马),规则同前;
5) 判断当前权值 =1 的马的个数,=6 则结束,否则转到 4)。

由上述思路得到的次数为:
6[1)] + 1[2)] + 5[5 次 4)] = 12
不知能否还能更简,听说有 8 次的,不知是否可行...