1、题目描述
有25
匹马,5
条赛道,每条赛道同时只能有一匹马跑,假设每匹马的水平都很稳定,在没有计时器的情况下最少需要比几场才能确定前三名。
2、思路解析
思路一:
25匹马分成5组,每组先进行一次比赛,这就要比5场。
我们给每个小组内进行完比赛的马进行标号,排名依次递减:Ai > Bi > Ci > Di > Ei,5 >= i >= 1。
五场比赛后确定了每个小组内的名次,接下来只需要把每个小组的第一名拿出来A1 A2 A3 A4 A5比一次,确定每个小组第一名的排名。假设结果是 A1 > A2 > A3 > A4 > A5,我们会得到下面的矩阵:
这样确定第一名A1。
根据上面的矩阵规律,可以确定第二名只能从B1和A2之间产生,接下来我们针对这两种情况来进行分别讨论。
如果第二名是B1,那么第三名只能从A2 B2 C1 之间产生。
如果第二名是A2,那么第三名只能从B1 B2 A3 之间产生。
所以只需要再将 A2 A3 B1 B2 C1这5匹马比一次就能确定第二名和第三名。
总共的比赛场次是5+1+1=7,最少需要比7场可以确定前三名。
作者:溜达虎爱编程
链接:https://leetcode.cn/circle/discuss/V6ZITu/
来源:力扣(LeetCode)
思路二:
首先,我们将 25 匹赛马分为 5 组,让每组马进行组内比赛,得到组内排名,假设结果为 A1>A2>A3>A4>A5 A1>A2>A3>A4>A5 A1>A2>A3>A4>A5(此时进行了 5 轮比赛)。因为组内排名第四与第五名不可能竞争全场前三名,所以排除每一组的第四与第五名。
第一回合
3.2 第二回合
其次,每一组跑得最快的一匹马作为代表元参与一轮 “代表赛”,假设比赛结果是:[A1>B1>C1>D1>E1][A1>B1>C1>D1>E1][A1>B1>C1>D1>E1],由此可以排除失去竞争资格的赛马:
-
A1 是代表赛中最快的,所以 A1 一定是全场第一名;
-
B1 是代表赛中的第二名,最快情况下 B1 同时也是全场的第二名,则 B3 前面还有 B2,所以 B3 失去竞争前三名的资格;
-
C1 是代表赛中的第三名,最快情况下 C1 同时也是全场的第三名,则 C2、C3{C2、C3}C2、C3 失去前三名的竞争资格;
-
D1 和 D1 是代表赛的四五名,说明 D 组和 E 组都失去了前三名的竞争资格;
第二回合
3.3 第三回合
此时,剩余的未知顺序的赛马正好有 5 匹,加赛一轮就可以得出第二名和第三名的归属。三个回合总共进行了 7 轮比赛,故答案就是 7。
作者:彭旭锐
链接:https://juejin.cn/post/6903861591188783112
来源:稀土掘金
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。