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