C# 我如何制定循环赛时间表?

C# 我如何制定循环赛时间表?,c#,algorithm,round-robin,tournament,C#,Algorithm,Round Robin,Tournament,我正在建立一个具有循环赛风格的比赛顺序的比赛时间表。我已经设置了一个算法来构建匹配,但是匹配顺序不是我想要的。我正在努力开发一种算法,可以按照我想要的顺序构建匹配。请参见下面带有6个团队括号的示例。每条垂直线代表锦标赛中的一行。最左边的数字代表基础队种子以及他们将在每轮比赛中扮演的角色 注:对我来说,唯一真正重要的是1号和2号种子在最后一轮比赛中发挥作用。最好是在锦标赛的第一轮比赛中进行1比6,2比5,3比4。其他的比赛并不那么重要。提前感谢您提供的任何帮助 1:65432 2:54361 3:

我正在建立一个具有循环赛风格的比赛顺序的比赛时间表。我已经设置了一个算法来构建匹配,但是匹配顺序不是我想要的。我正在努力开发一种算法,可以按照我想要的顺序构建匹配。请参见下面带有6个团队括号的示例。每条垂直线代表锦标赛中的一行。最左边的数字代表基础队种子以及他们将在每轮比赛中扮演的角色

注:对我来说,唯一真正重要的是1号和2号种子在最后一轮比赛中发挥作用。最好是在锦标赛的第一轮比赛中进行1比6,2比5,3比4。其他的比赛并不那么重要。提前感谢您提供的任何帮助

1:65432

2:54361

3:46215

4:3 2 1 5 6

5:21643

6:1 3 5 2 4

这是我目前的代码:

                int numTeams = teamList.Count;

                int rounds = (numTeams - 1);
                int halfSize = numTeams / 2;
                List<Team> teams = new List<Team>();
                teams.AddRange(teamList); // Copy all the elements.
                teams.RemoveAt(0); // To exclude the first team.

                int teamSize = teams.Count;
                for (int round = 0; round < rounds; round++)
                {
                    int teamIdx = round % teamSize;

                    Team baseTeam1 = teams[teamIdx];
                    Team baseTeam2 = teamList[0];
                    // save each team to a match

                    for (int idx = 1; idx < halfSize; idx++)
                    {
                        int firstTeamIdx = (round + idx) % teamSize;
                        int secondTeamIdx = (round + teamSize - idx) % teamSize;

                        Team subTeam1 = teams[firstTeamIdx];
                        Team subTeam2 = teams[secondTeamIdx];
                        // save each team to a match

                    }

                }
int numTeams=teamList.Count;
整数轮=(numTeams-1);
int halfSize=numTeams/2;
列表团队=新列表();
teams.AddRange(团队列表);//复制所有元素。
团队。移除(0);//排除一线队。
int teamSize=teams.Count;
用于(整数轮=0;轮<轮;轮++)
{
int teamIdx=四舍五入%teamSize;
团队baseTeam1=团队[teamIdx];
团队baseTeam2=团队列表[0];
//拯救每一队参加一场比赛
对于(int-idx=1;idx
有时问问题有助于找出答案。事实证明,我当前的算法是按照相反的顺序创建我想要的。我所做的是在第一个for循环内创建一个新变量,名为actualRound:

int actualRound=rounds-round;//这将颠倒顺序