0

我正在建立一个循环赛风格的比赛日程。我设置了一个算法来构建匹配,但是匹配顺序不是我想要的。我正在努力开发一种算法,该算法将按照我想要的顺序构建匹配项。请参阅下面的示例,其中包含 6 队支架。每条垂直线代表锦标赛中的一行。最左边的数字代表基地队种子以及他们将在每轮比赛中扮演的角色。

注意:对我来说唯一真正重要的是 1 号和 2 号种子在比赛的最后一轮比赛。最好是在第一轮比赛中进行 1 对 6、2 对 5、3 对 4 的比赛。所有其他比赛都不那么重要。提前感谢您提供的任何帮助。

1:6 5 4 3 2

2:5 4 3 6 1

3:4 6 2 1 5

4:3 2 1 5 6

5:2 1 6 4 3

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

                    }

                }
4

1 回答 1

1

有时提出问题有助于找出答案。事实证明,我当前的算法正在创建我想要的,只是以相反的顺序。我所做的修复是在第一个 for 循环中创建一个名为actualRound 的新变量:

int actualRound = 回合 - 回合;// 这将反转轮次

于 2020-03-22T00:38:25.977 回答