問題
描寫敘述:
設有n(
2^k)位選手參加網球迴圈賽,迴圈賽共進行n-1
天,每位選手要與其它
n-1位選手比賽一場。且每位選手每天僅僅能賽一場,試安排比賽。
舉例說明:1,當
n為偶數時,迴圈賽一共要進行n-1
天;比方,有運動員:周董,信哥,蔡依林,小七。一共
4個人,能夠例如以下安排:
運動員第一天
第二天第三天
周董信哥
蔡依林小七
信哥周董
小七蔡依林
蔡依林小七
周董信哥
小七蔡依林
信哥周董
能夠看出。當四個人比賽的時候,要比
3天才幹所有比完。
2,當n為奇數時,迴圈賽要進行
n天;如圖,現有運動員:周董,信哥。蔡依林
,比賽安排表例如以下:
運動員第一天
第二天第三天
周董信哥
蔡依林x
信哥周董
x蔡依林
蔡依林x
周董信哥
能夠看出,當n=3
時,人數為奇數,而且出現輪空現象。
綜上。我們能夠得出乙個基本結論
比賽次數=
n為偶數
n-1天
n為奇數 n
天 演算法描寫敘述:
依照分治策略,我們將
n個選手先一分為二。每組n/2
人。假設
n為奇數,則(
n+1)
/2後分組。然後像我們一起的歸併排序那樣,一直分下去,直到最後僅僅有兩個人比賽。
舉例說明。
6個人比賽。須要比賽
5天,安排例如以下:
1234
5621
5364
3612
4545
6132
5426
1363
4521
回憶我們的歸併排序,歸併排序是先分開。最後再合起來。
這裡也是。
我們先將
6個人分成
2組。每組
3個人(
[1,2,3],[4,5,6]
),然後發現
3是個奇數。然後在每組中+1
個虛擬人:x和
y;這樣,每組就變成了
4個人,然後將這
4個人在除以
2。我們就得到了乙個兩兩組合的小的組。
首先來看
[1,2]; [3,x]
1221
3xx3
將這兩組合起來:12
213x
x3
這樣,第一天的比賽排好了,然後來排第二天的比賽。
接下來第二天讓1跟
3比較,這樣
2就僅僅能跟
x比較了。 1
2321
33x1
x32
依此類推。第三天,讓1跟
x比較,2跟
3比較:
123x
21x3
3x12
x321
這裡要得到
3個選手的比賽安排,所以,我們將假象的
x去掉。並將它的位置以
*取代:
123*21
*33*
12
然後我們也依照這個規律,安排
[4,5,6]
的日程,得到**
456*54
*66*
45
將前3天的日程安排合併起來:
123*
21*3
3*12
456*
54*6
6*45
我們能夠看到,第一天。3和
6都空暇。能夠讓他們比賽。第二天,2和
5都空暇,能夠讓他們比賽;第三天。1和
4空暇,讓他們相互比賽。
所以,上表又一次安排,得到前
3天的日程安排表:
1234
2153
3612
4561
5426
6345
這樣,我們就比較過了
[1,2,3]
和[4,5,6].
然後迴圈下,得到:
[1,2,3]& [5,6,4]
[1,2,3]& [6,4,5]
安排三天的比賽:12
35 2
16 3
34 1
2564
1 65
2 44
3 56
1236 2
14 3
35 1
2645
1 46
2 55
3 64
選取黃色的日程安排,增加到前
3天的日程安排表中:
1234
5 6
2153
6 4
3612
4 5
4561
3 2
5426
1 3
6345
2 1
假設n恰好等於
2^k,那麼。安排日程表就變得比較簡單了,我們先安排兩位選手,
1221
安排4位選手:
1 2
342
1 43
341
2 43
2 1
這時候,我們先依照兩個選手的。將1和
2的安排填好,然後填寫左下角的安排,然後將左下角的元素抄到右上角,最後將左上角的元素抄到右下角。
小結:
分治法在將大問題一步一步兩兩分,直到劃分成能夠解決的小問題時,求出這些小問題的解,然後再將小問題合成大問題的解,可是前提是這些小問題在求解是不受到其它小問題的解的影響的。
迴圈賽日程安排問題
問題描寫敘述 設有n n 2 k 支隊伍參加迴圈賽,迴圈賽共進行n 1天,每支隊伍要與其它n 1支隊伍比賽一場,且每支隊伍每天必須比賽一場,不能輪空。試按此要求為比賽安排日程。演算法思路 我們先安排奇數下標位置與偶數下標位置之間的比賽,就有n 2場,方法非常easy,team 2k 2k,全部奇數號...
分治法 迴圈賽日程表問題
迴圈賽日程表問題問題描述 設有n n 2 k 位選手參加網球迴圈賽,迴圈賽共進行n 1天,每位選手要與其他n 1位選手比賽一場,且每位選手每天必須比賽一場,不能輪空。試按此要求為比賽安排日程 1 每個選手必須與其他n 1個選手各賽一場 2 每個選手一天只能賽一場 3 迴圈賽一共進行n 1天。思路和 ...
分治法 迴圈賽日程表
設有n 2k個運動員要進行羽毛球迴圈賽,現要設計乙個滿足以下要求的比賽日程表 1 每個選手必須與其它n 1個選手各賽一次 2 每個選手一天只能比賽一次 3 迴圈賽一共需要進行n 1天。由於n 2 k,顯然n為偶數。按分治策略,將所有的選手分為兩半,n個選手的比賽日程表就可以通過為n 2個選手設計的比...