我试图以特定方式对组合列表进行排序。 将数字1-6视为团队,如果每个团队都能按时对阵其他团队,我们将此列表视为可能的匹配:
12 23 34 45 56
13 24 35 46
14 25 36
15 26
16
所以现在我想要的是“比赛日”:
12 13 14 15 16
34 46 26 24 23
56 25 35 36 45
正如你在每个区块后看到的那样,每支球队都有一场比赛,两场比赛,...... 我无法得到一个算法来对此列表进行排序:
12 13 14 15 16 23 24 25 26 34 35 36 45 46 56
到
12 34 56 13 46 25 14 26 35 15 24 36 16 23 45
其他: 有了奇怪的球队数据,创造比赛日的方式变得更糟,因为你必须离开球队当天:
12 23 34 45
13 24 35
14 25
15
12 23 14 24 25
34 45 35 15 13
在第一个区块5中没有在第二个区块中进行游戏1没有播放....
感谢您在c#中使用.net 4对此问题的任何帮助或想法,可能使用Linq来操作列表。
解决方案:
循环赛锦标赛
http://en.wikipedia.org/wiki/Round-robin_tournament
Round Robin Tournament algorithm in C#
答案 0 :(得分:0)
你真的不需要对此进行排序(从我能看到的内容)。
您需要做的就是创建3个项目的“集合”,其中2个团队的项目为{A,B}。
所以首先,挑选任何随机项目(并从所有组合列表中删除),然后你说:{1,3}。然后为A和B选择另一个随机数(并删除),其中{A,B}!= 1或3。最后一步很简单,因为您只剩下2个选项。选择任何有效选项,从列表中删除。再重复4次。