【发布时间】:2023-08-31 21:49:01
【问题描述】:
假设有 8 名球员参加沙滩排球比赛。 比赛以 2 对 2 进行。
作为组织者,我想为具有以下规则的玩家生成时间表:
- 每个玩家和大家一起玩(每个玩家 7 场比赛)
- 每个玩家与每个玩家对战两次
所以时间表会开始,例如:
round 1
player1 + player2 vs player3 + player4
player5 + player6 vs player7 + player8
round2
player1 + player3 vs player2 + player5
player4 + player7 vs player6 + player8
round3
player1 + player4 vs player2 + player3
player5 + player8 vs player6 + player7
etc
通过上面的例子,让我们想想 player1。 他一直和球员(2,3,4)一起比赛,所以他还和球员(5,6,7,8)一起比赛
他一直在比赛:
Player3 (twice)
Player4
Player2 (twice)
Player5
所以剩下的 4 场比赛(球员 1)应该和球员 5,6,7,8 一起打,对手不能是球员 3 或球员 2(因为你已经和他们打过两次了)
我在这里看到了很好的例子How to automatically generate a sports league schedule 和关于循环的*文章https://en.wikipedia.org/wiki/Round-robin_tournament(Richard Schurig (1886) 的配对表的原始构造)可以很好地生成匹配,但是会有更多与一些球员进行两场比赛。
非常感谢任何帮助!
【问题讨论】:
-
这是社交高尔夫球手问题的一个变体。请参阅 wikipedia 或 mathpuzzle 了解以编程方式处理此问题的想法。
标签: algorithm math schedule tournament sports-league-scheduling-problem