团体对抗单循环对阵编排算法

 问题描述: 有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)


你可能感兴趣的:(算法,算法)