C# 为分成N/2对的N名玩家生成所有可能的配对排列

C# 为分成N/2对的N名玩家生成所有可能的配对排列,c#,algorithm,combinations,permutation,combinatorics,C#,Algorithm,Combinations,Permutation,Combinatorics,我正在尝试为拥有N球员且N%2=0 比如说,我想为6名玩家生成一个时间表,他们分别是A、B、C、D、E、F 考虑AB!=BA并应作为不同的对进行跟踪 如果有6名球员,应该有30对不同的球员。 成对组合的数量为pairscont/(N/2) 以下竞赛的配对不能相同,例如,如果竞赛1有配对AB,则竞赛2不应有配对AB (AB) (CD) (EF) (AC) (BE) (CF) ... (BA) (DC) (FE) ... 我试着遵循这个解决方案 问题是接下来的比赛和之前的比赛是一样的。 我

我正在尝试为拥有
N
球员且
N%2=0

比如说,我想为6名玩家生成一个时间表,他们分别是A、B、C、D、E、F

考虑
AB!=BA
并应作为不同的对进行跟踪

如果有6名球员,应该有30对不同的球员。 成对组合的数量为
pairscont/(N/2)

以下竞赛的配对不能相同,例如,如果竞赛1有配对AB,则竞赛2不应有配对AB

(AB) (CD) (EF)
(AC) (BE) (CF)

...

(BA) (DC) (FE)

...
我试着遵循这个解决方案

问题是接下来的比赛和之前的比赛是一样的。
我希望你能理解我的问题,并给我举一个生成这种日程安排的好例子。

我把你弄丢了。你已经生成了30个不同的对,然后,你又生成了30个不同的对,并且意识到它们和上一代是一样的?这不是预期的结果吗,因为你的第一代已经有了所有可能的配对排列?还是我理解错了你的病情?我想你理解错了。我只生成一次30对。但是使用我附加的解决方案,我得到了错误的序列:(AB)对被发现三次。我不想那样。我不希望球员A连续三周与球员B比赛。我想以某种方式混合这一点,他们每周都会与不同的球员比赛。所以你得到了正确的
,但现在你正试图让他们正确排序?两个玩家不应该在连续两周内相遇?没错。到目前为止,我想我在这里找到了一个解决方案,就是
BA
AB
相同?我认为一般来说,对于这样的问题,在特定的群体中,顺序并不重要。否则,您将多次计算相同的组合。总共应该只有15个结果。如果这是正确的,那么这是一个已知的问题。它被称为大小相等的组的分区。我在
R
中编写了一个包,它使用函数
comboGroups(v=c(“a”、“B”、“F”)、numGroups=3)来攻击类似的问题。看见