3路/4路循环赛调度算法

3-way / 4-way round-robin tournament scheduling algorithm

我想要 create/implement 一个锦标赛调度算法,它能够处理每场比赛超过 2 名参与者。

这个问题似乎对 2 个参与者来说是众所周知的。例如,请参见此处:Round Robin Algorithm Implementation Java

6 支球队(A、B、C、D、E、F)的对决示例:

  1. (ABC)(DEF)
  2. (ABD)(CEF)
  3. (ABE)(CDF)
  4. (ABF)(CDE)
  5. (ACD)(BEF)
  6. (ACE)(BDF)
  7. (ACF)(BDE)
  8. (ADE)(BEF)
  9. (ADF)(BCE)
  10. (AEF)(BCD)

如果队伍数量为奇数(即 A、B、C、D、E),我希望每轮进行 3 路和 2 路比赛:(ABC)(DE)

一旦解决了 3 路问题,我想对 4 路游戏做同样的事情。

我无法创建这样的算法,也无法在互联网上找到类似的解决方案。

有人能给我指出正确的方向吗?

要从 N 项中选择 K 项,您需要 combinations

请注意 C(6,3)=20 但您修复了一项 (A) 并且确实有 C(5,2)=10 个变体

组合生成的实现有很多种——最简单的是recursive, more effective is lexicographic ordered generation -simple C code