- 64匹馬,8個跑道,問最少比賽多少場,可以選出跑得最快的4匹馬
- Assumptions:每場比賽每個跑道只允許一匹馬,且不存在並列情形
問題分析
- step1:需8場比賽
- 首先把64匹馬隨機分為8組並標記組別,遍歷組別,比賽8次,並記錄每組賽馬名次(eg:A1>A2>...>A7>A8
- 首先可直接剔除各組后四名賽馬,剩余64-4*8=32匹賽馬待定
- step2:需1場比賽
- 選出每組排名第一的賽馬進行一次比賽,記錄結果,不失一般性地,記為:A1>B1>C1>D1>E1>F1>G1>H1
-
根據這輪比賽結果,首先可以剔除E、F、G、H這四組所有賽馬(因為本組第一都未進入前4),剩余16匹馬
- 其次可以確定A1就是全場MVP,屬全場N01,剩余15匹馬待定
- 還可以進一步細化
- D組2-4名賽馬:D2>D3>D4,不可能是Top4,可剔除這3匹,剩余15-3=12匹賽馬待定
- C組3-4名賽馬:C3>C4,不可能是Top4,可剔除這2匹,剩余12-2=10匹賽馬待定
- B組第4名賽馬:B4,也不可能是Top4,可剔除這1匹,剩余10-1=9匹賽馬待定
- step3:需1場or2場比賽
- 當前剩余待定9匹賽馬:A2>A3>A4,B1>B2>B3,C1>C2,D1
- 因為可以確定B1>C1>D1,因此挑選:A2>A3>A4,B1>B2>B3,C1>C2( 或者 A2>A3>A4,B1>B2>B3,C1>D1)等8匹馬進行一場比賽,剩余一匹賽馬D1或者C2待定,重點關注C1名次
- 僅需1場比賽情形
- 當C1排名第3及以后,則選出本場前3名賽馬,外加大佬A1,即為所求的Top4匹馬
- 需2場比賽情形
- 因為已知B1>C1,所以C1本場名次區間為[2,8]
- 當C1排名第2時,可推知B1排名本場第一,因此A1>B1>C1即為全場Top3匹馬,此時可剔除B1,C1兩匹馬,剩余9-2=7匹馬待定(如下)
- 本輪上場剩余6匹:A2>A3>A4,B2>B3,C2
- 未上場1匹:D1
- 將本場剩余7匹賽馬再進行一場比賽,一決高低,記錄名次,選出本場排名第一的賽馬,加上A1>B1>C1,即為全場Top4匹馬。