N N匹馬,N個賽道,求出最快N匹馬的解法

2021-08-26 20:08:39 字數 3158 閱讀 7955

入門級:81匹馬,9個賽道,不計時,最少要賽幾場可以求出最快四匹馬?

首先:分為9組分別進行比賽後得到每一組的比賽名次,比賽場次:9;

然後:將9組的每組第一名比賽,得到第一名,肯定是所有馬的第一名;比賽場次:1

最後:剩下馬中有資格角逐前四名的馬有a2、a3、a4、b1、b2、b3、c1、c2、d1,剛好有9匹馬,在進行一場比賽就可以了,比賽場次:1

所以最少進行11場比賽。

提高端:

問題是這樣的:一共有25匹馬,有乙個賽場,賽場有5個賽道,就是說最多同時可以有5匹馬一起比賽。假設每匹馬都跑的很穩定,不用任何其他工具,只通過馬與馬之間的比賽,試問最少 得比多少場才能知道跑得最快的5匹馬。

注意: "假設每匹馬都跑的很穩定" 的意思是在上一場比賽中a馬比b馬快,則下一場比賽中a馬依然比b馬快。

稍微想一下,可以採用一種 競標賽排序(tournament sort)的思路。 見《選擇排序 》

(1) 首先將25匹馬分成5組,並分別進行5場比賽之後得到的名次排列如下:

a組: [a1 a2 a3 a4 a5]

b組: [b1 b2 b3 b4 b5]

c組: [c1 c2 c3 c4 c5]

d組: [d1 d2 d3 d4 d5]

e組: [e1 e2 e3 e4 e5]

其中,每個小組最快的馬為[a1、b1、c1、d1、e1]。

(2) 將[a1、b1、c1、d1、e1]進行第6場,選出第1名的馬,不妨設 a1>b1>c1>d1>e1. 此時第1名的馬為a1。

(3) 將[a2、b1、c1、d1、e1]進行第7場,此時選擇出來的必定是第2名的馬,不妨假設為b1。因為這5匹馬是除去a1之外每個小組當前最快的馬。

(3) 進行第8場,選擇[a2、b2、c1、d1、e1]角逐出第3名的馬。

(4) 依次類推,第9,10場可以分別決出第4,5名的嗎。

因此,依照這種競標賽排序思想,需要10場比賽是一定可以取出前5名的。

仔細想一下,如果需要減少比賽場次,就一定需要在某一次比賽中同時決出2個名次,而且每一場比賽之後,有一些不可能進入前5名的馬可以提前出局。 當然要做到這一點,就必須小心選擇每一場比賽的馬匹。我們在上面的方法基礎上進一步思考這個問題,希望能夠得到解決。

(1) 首先利用5場比賽角逐出每個小組的排名次序是絕對必要的。

(2) 第6場比賽選出第1名的馬也是必不可少的。假如仍然是a1馬(a1>b1>c1>d1>e1)。那麼此時我們可以得到乙個重要的結論:有一些馬在前6場比賽之後就決定出局的命運了(下面藍色字型標誌出局)。

a組: [a1 a2 a3 a4 a5]

b組: [b1 b2 b3 b4 b5 ]

c組: [c1 c2 c3 c4 c5 ]

d組: [d1 d2 d3 d4 d5]

e組: [e1 e2 e3 e4 e5 ]

(3) 第7場比賽是關鍵,能否同時決出第2,3名的馬呢?我們首先做下分析:

在上面的方法中,第7場比賽[a2、b1、c1、d1、e1]是為了決定第2名的馬。但是在第6場比賽中我們已經得到(b1>c1>d1>e1),試問?有b1在的比賽,c1、d1、e1還有可能爭奪第2名嗎? 當然不可能,也就是說第2名只能在a2、b1中出現。實際上只需要2條跑道就可以決出第2名,剩下c1、d1、e1的3條跑道都只能用來湊熱鬧的嗎?

能夠優化的關鍵出來了,我們是否能夠通過剩下的3個跑道來決出第3名呢?當然可以,我們來進一步分析第3名的情況?

● 如果a2>b1(即第2名為a2),那麼根據第6場比賽中的(b1>c1>d1>e1)。 可以斷定第3名只能在a3和b1中產生。

● 如果b1>a2(即第2名為b1),那麼可以斷定的第3名只能在a2、b2、c1 中產生。

好了,結論也出來了,只要我們把[a2、b1、a3、b2、c1]作為第7場比賽的馬,那麼這場比賽的第2,3名一定是整個25匹馬中的第2,3名。

我們在這裡列舉出第7場的2,3名次的所有可能情況:

① 第2名=a2,第3名=a3

② 第2名=a2,第3名=b1

③ 第2名=b1,第3名=a2

④ 第2名=b1,第3名=b2

⑤ 第2名=b1,第3名=c1

(4) 第8場比賽很複雜,我們要根據第7場的所有可能的比賽情況進行分析。

① 第2名=a2,第3名=a3。那麼此種情況下第4名只能在a4和b1中產生。

● 如果第4名=a4,那麼第5名只能在a5、b1中產生。

● 如果第4名=b1,那麼第5名只能在a4、b2、c1中產生。

不管結果如何,此種情況下,第4、5名都可以在第8場比賽中決出。其中比賽馬匹為[a4、a5、b1、b2、c1]

② 第2名=a2,第3名=b1。那麼此種情況下第4名只能在a3、b2、c1中產生。

● 如果第4名=a3,那麼第5名只能在a4、b2、c1中產生。

● 如果第4名=b2,那麼第5名只能在a3、b3、c1中產生。

● 如果第4名=c1,那麼第5名只能在a3、b2、c2、d1中產生。

那麼,第4、5名需要在馬匹[a3、b2、b3、c1、a4、c2、d1]七匹馬中產生,則必須比賽兩場才行,也就是到第9場角逐出全部的前5名。

③ 第2名=b1,第3名=a2。那麼此種情況下第4名只能在a3、b2、c1中產生。

情況和②一樣,必須角逐第9場

④ 第2名=b1,第3名=b2。 那麼此種情況下第4名只能在a2、b3、c1中產生。

● 如果第4名=a2,那麼第5名只能在a3、b3、c1中產生。

● 如果第4名=b3,那麼第5名只能在a2、b4、c1中產生。

● 如果第4名=c1,那麼第5名只能在a2、b3、c2、d1中產生。

那麼,第4、5名需要在馬匹[a2、b3、b4、c1、a3、c2、d1]七匹馬中產生,則必須比賽兩場才行,也就是到第9場角逐出全部的前5名。

⑤ 第2名=b1,第3名=c1。那麼此種情況下第4名只能在a2、b2、c2、d1中產生。

● 如果第4名=a2,那麼第5名只能在a3、b2、c2、d1中產生。

● 如果第4名=b2,那麼第5名只能在a2、b3、c2、d1中產生。

● 如果第4名=c2,那麼第5名只能在a2、b2、c3、d1中產生。

● 如果第4名=d1,那麼第5名只能在a2、b2、c2、d2、e2中產生。

那麼,第4、5名需要在馬匹[a2、b2、c2、d1、a3、b3、c3、d2、e1]九匹馬中產生,因此也必須比賽兩場,也就是到第9長決出勝負。

總結:最好情況可以在第8場角逐出前5名,最差也可以在第9場搞定。

N N匹馬,N個賽道,求出最快N匹馬的解法

入門級 81匹馬,9個賽道,不計時,最少要賽幾場可以求出最快四匹馬?首先 分為9組分別進行比賽後得到每一組的比賽名次,比賽場次 9 然後 將9組的每組第一名比賽,得到第一名,肯定是所有馬的第一名 比賽場次 1。在這9匹馬中,除了第一名是所有馬的第一名,第2 4名有資格角逐所有馬中的前4名,9個第一名...

N N匹馬,N個賽道,求出最快N匹馬的解法

入門級 81匹馬,9個賽道,不計時,最少要賽幾場可以求出最快四匹馬?首先 分為9組分別進行比賽後得到每一組的比賽名次,比賽場次 9 然後 將9組的每組第一名比賽,得到第一名,肯定是所有馬的第一名 比賽場次 1 最後 剩下馬中有資格角逐前四名的馬有a2 a3 a4 b1 b2 b3 c1 c2 d1,...

64匹馬,8個賽道,找出跑得最快的4匹馬

全部馬分為8組,每組8匹,每組各跑一次,然後淘汰掉每組的後四名,如下圖 需要比賽8場 取每組第一名進行一次比賽,然後淘汰最後四名所在組的所有馬,如下圖 需要比賽1場 這個時候總冠軍已經誕生,它就是a1,藍色區域 它不需要比賽了 而其他可能跑得最快的三匹馬隻可能是下圖中的黃色區域了 a2,a3,a4,...