團體對抗單迴圈對陣編排演算法

來源:互聯網
上載者:User

 問題描述: 有A、B兩個隊,各有N個隊員,現在要舉行團體單迴圈對抗賽,即進行N輪比賽,使A隊的每個隊員都要和B隊的所有選手交手一次。

要求做出對陣編排表,達到:

1、每個選手都和對方的所有選手交手一次。

2、第3輪及以後各輪結束時,每個選手自己的先後手數差值的絕對值不大於1。

3、每輪對陣時,每個隊伍的先手隊員數和後手隊員數相差至多為1(即每個隊伍都儘可能一半先手,一半後手)。

以7人制團體對抗為例,設A隊的5名隊員為1,2,3,4,5,6,7 。B隊的7名隊員為8,9,10,11,12,13,14。

則各輪編排的過程如下:

第一輪編排過程

1、第一輪的配對方法,將A隊的所有隊員寫在上邊,B隊的所有隊員下邊,然後一一配對。如下所示

     A隊隊員:  1   2   3   4    5     6      7

    B隊隊員:   8   9  10 11  12   13     14

配對錶為:

     1-8

     2-9

     3-10

     4-11

     5-12

     6-13

     7-14

2、先後手的確定:

    本輪A為主隊,B為客隊。

     單數台次隊主隊先手,雙數台次客隊先手。

    所以,第一輪的最終編排表為

第1台:   (1)-8

第2台:    2-(9)

第3台:    (3)-10

第4台:    4-(11)

第5台:      (5)-12

第6台:      6-(13)

第7台:      (7)-14

 加括弧的選手執先手,下同。

至此第一輪的編排結束。

以後各輪的編排步驟是(以第2輪為例):

1、確定本輪優先坐第一台先手的隊,稱為(本輪)主隊。另一隊稱為(本輪)客隊。確定的原則為:單數輪次A為主隊。雙數輪次B為客隊。

故第2輪B為主隊,A為客隊。第一台主隊執先,客隊執後。

2、根據下列次序從主隊選拔應該坐在第一台執先的選手,當某一步只剩一個候選者時,選拔結束:

(1)找出主隊中先手數最少的選手。

例:B隊的8,10,12,14號的先手數均為0。現在8,10,12,14均為候選者。

(2)當多個選手先手數一樣時,則繼續篩選上輪執後的。

例:8,10,12,14號均上輪執後。候選者列表仍然為{8,10,12,14}

(3)無法根據先後手情況區分選手時,繼續選擇尚未坐過第一台的選手。

例:8號坐過第一台,被淘汰。現在的候選者列表為{10,12,14}

(4)當有多個選手都未坐過第一台時,則最終選擇編號最小的那個。

所以最終由B隊的10號在第一台執先。

以後設主隊第一台的選手為X。其對手為Y

3、客隊第一台選手Y的選拔步驟:

(1)找出尚未和X交手過的所有選手。

例:A隊中尚未和10號交手的有1,2,4,5,6,7,進入初選的候選者列表為{1,2,4,5,6,7}。

(2)若有多個候選者,則從X的候選對手列表中找出後手數最少的。

例:1, 5,7的後手數為0,4,6號後手數為1,故4,6號被淘汰。1,5,7進入下輪選拔。

(3)當多個選手後手數一樣時,篩選出上輪執先的選手。

1,5,7均上輪執先。候選者列表仍然為{1,5,7}

(4)當多個選手均上輪執先時,繼續篩選出尚未坐過第一台的選手。

1在第一輪坐過第一台,被淘汰。還剩兩候選者:{5,7}。

(5)當有多個選手都未坐過第一台時,則選擇編號最小的那個。

最終第二輪客隊的第一台選手是5。

所以第二輪第一台的配對結果為10號先手對5號。

4、其他各台的配對辦法

按從首台開始,將兩個隊的其他隊員按編號遞增的順序寫在第一台的下面。當寫到本隊的最後一個對員時,其下一台的隊員是本隊編號最小的那個隊員,

以後各台的選編號再繼續遞增。

故第2輪的配對結果為:

10- 5

11-6

12- 7

13- 1

14-2

8- 3

9-4

5、先後手的確定辦法:主隊中上輪執後的所有選手本輪執先,其對手執後。主隊中所有上輪執先的選手本輪執後,其對手本輪執先。所以第二輪的最終對陣表為

(10)- 5 

11-(6)

(12)- 7

13- (1)

(14)-2

(8)- 3

9-(4)

至此第二輪編排完畢。以後各輪可依此類推,為方便讀者,將以後各輪的主要步驟和結果一併寫出

第三輪:A為主隊,第一台選手為2,B為客隊,第一台選手為12,對陣表為

(2)-12

(3)-13

4-(14)

(5)-8

6-(9)

(7)-10

1-(11)

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.