给定一个有N 个人的类(这由数组 int[] a 表示),其中每个人都与所有其他人玩游戏。每场比赛将只涉及 2 名玩家。所以对于 N 个人,总共会有NC2游戏。
所有游戏的结果都与您同在。您必须将每个人安排在队列中,条件是a[i] 应该用 a[i-1] 赢得比赛。这对于 i 的所有值都是正确的。
我们不需要关心 a[i] 和 a[i-2] 之间的结果。a[i] 可以用 a[i-2] 赢得或输掉比赛。
我的方法(我使用回溯来解决这个问题):
- 对于每个人,我们将维护与该人一起赢得比赛的人的列表。
- 将创建一个新的结果数组(长度等于玩家总数)。
- 第一个位置由每个人迭代填充。
- 结果数组中的下一个位置由与前一个人赢得比赛的人填充。这个人将通过迭代该数组从前一个人的相应获奖名单中挑选出来。
上述解决方案将使用递归方法尝试每条路径。没有更好的算法吗?