我想创建/实现一个锦标赛调度算法,每个游戏能够处理2个以上的参与者 .
对于2名参与者来说,问题似乎是众所周知的 . 请看这里例如:Round Robin Algorithm Implementation Java
与6支球队(A,B,C,D,E,F)的比赛示例:
-
(ABC)(DEF)
-
(ABD)(CEF)
-
(ABE)(CDF)
-
(ABF)(CDE)
-
(ACD)(BEF)
-
(ACE)(BDF)
-
(ACF)(BDE)
-
(ADE)(BEF)
-
(ADF)(BCE)
-
(AEF)(BCD)
如果队员数量奇数(即A,B,C,D,E),我希望每轮都有3路和2路比赛:(ABC)(DE)
一旦解决了3路问题,我想对4路游戏做同样的事情 .
我无法创建这样的算法,也无法在互联网上找到类似的解决方案 .
有人能指出我正确的方向吗?
1 回答
要从N中选择K项,您需要combinations .
请注意
C(6,3)=20
,但您确实修复了一个项目(A)并且确实有C(5,2)=10
变体组合生成有很多实现 - 最简单的是recursive,更有效的是lexicographic ordered generation -simple C code