從25匹馬中選5匹最快馬


一,問題描述:

從25匹馬中選出跑的最快的5匹,每次比較5匹(5個賽道),假設每匹馬的狀態是穩定的

 

二,思路:

1,正向:增至5匹

2,逆向:減至/剩至5匹

3,正向+逆向:

 

三,我的解答:

設有矩陣/二維數組如下,且依據每次比賽結果進行排序,永遠保證M[i][j] > M[i+n][j+n] (n > 0),即永遠保證組內有序(從上到下遞減)、組間有序(從左至右遞減)

 

A1

B1

C1

D1

E1

A2

B2

C2

D2

E2

A3

B3

C3

D3

E3

A4

B4

C4

D4

E4

A5

B5

C5

D5

E5

 

1,最壞/最多情況:10次

前5步:分5組,比5次(縱向比較/組內有序)

第六步:取每組第一名進行比較(橫向比較),拋出第一名

第七步~第十步:取每組當前第一名(除去拋出的元素,類似5個彈夾,各組成員依次上頂)進行比較(橫向比較),依次拋出第二名~第五名

 

2,最好/最少情況:7次

前5步:分5組,比5次(縱向比較/組內有序)

第六步:取每組第一名進行比較(橫向比較)並依據比較結果進行排序(組間有序),此時有A1>B1>C1>D1>E1,拋出第一名/A1

第七步:選第二匹。因為組內有序和組間有序,所以每個子矩陣左上角的第一個元素為該子矩陣中最大的元素(最快馬)。每次只要比較子矩陣中最大元素和該子矩陣之外的元素即可,即比較B1(紅色子矩陣中最大元素)、A2、A3、A4和A5。若A2>A3>A4>A5>B1,則最快的5匹馬為A1、A2、A3、A4、A5,且A1>A2>A3>A4>A5

 

四,校驗:

1,假設最快的5匹馬都分在同一組

2,假設最快的5匹馬分別為各組的第一名

 

五,我的總結:

最少比賽次數N一定滿足:6 < N <= 10

 

六,參考:

1,CSDN網友SaiRose:

//該網友討論的是25選3(每次比較5匹)的問題,與本題略有不同

7場是最少的了

首先是先全部都比一次:

A1 A2 A3 A4 A5

B1 B2 B3 B4 B5

C1 C2 C3 C4 C5

D1 D2 D3 D4 D5

E1 E2 E3 E4 E5

這5次是必須的

然后分別找出第一,第二,第三

先A1 B1 C1 D1 E1,這樣可以得到第一,不妨設這組結果為A1 B1 C1 D1 E1,A1第一

有了上面6組結果可以肯定第二在A2 B1中

如果第二是A2,那么第三肯定在B1 A3中

如果第二是B1,那么第三肯定在A2 B2 C1中

所以現在我們只要知道了A2 A3 B1 B2 C1的大小順序就可以判斷第二第三分別是誰

所以總共需要7次比賽就可以了

上面討論基於這個結論:

若Pi是第i,則第i+1必然是所有已經完了的比賽中排在Pi后面那匹馬中的一個

 

2,http://blog.csdn.net/chen825919148/article/details/8053980

//只參考其第6場比賽中排除法的思想(若已確定有5匹馬比它快,則排除該馬)


注意!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系我们删除。



 
粤ICP备14056181号  © 2014-2020 ITdaan.com