有25匹馬和一個5個賽道的馬場,每場比賽可以決出5匹馬的排名,假設每匹馬發揮穩定,且不會出現名次相同的情況。問:如果要知道25匹馬中跑得最快的馬,需要幾場比賽?如果需要知道跑得第二快的馬,需要幾場比賽?第三快的呢?
題目分析
題解
-
遞增矩陣解法
首先將25匹馬分5組比賽5次,可以得到各組內的排名。將5個第一名再賽一次,就可以知道25匹馬中最快的馬。將最快的馬那組的第二名替換掉第一名,再賽一次,就可以知道第二快的馬是誰。
根據賽馬的各組名次,可以構建出賽馬的遞增矩陣,其中每一列代表一個分組,從上至下為從快到慢。

根據該矩陣可以使用貪心算法的思想,很快的選出最快的3匹馬。
-
第一快的馬
首先可以對第一行的馬進行比賽,選出最快的馬,就為所有馬中最快的馬。這里我們假設為左上角的a1。對於第一行的馬的比賽,我們假設比賽結果為a1>b1>c1>d1>e1
-
第二快的馬
由第一次比賽的結果,可知,第二快的馬會在b1和a2中選出,因為b1此時是以其為左上角元素的矩陣的最大值,而a2是其所在列的最大值,因此選兩者進行比賽,可以得到結果。
-
第三快的馬
-
第二快的馬為b1
因此此時對a2、b2、c1進行比較可以得到第三快的馬。
-
第二快的馬為a2
此時可選的最大值為第一列的a3,以及后四列的最大值b1,所以只要比較a3與b1就可以得到第三快的馬。
-
-
總結
第一快需要6場、第二快需要7場、第三塊需要8場
參考資料