问题
我有一张运动成绩表,正在寻找在每一轮中选择一支球队的最佳方法,以使相关分数的总和最大。此选择受以下约束:
- 球队的数量与轮次一样多
- 您必须选择每支球队一次且仅一次,并且每轮仅进行一次选择
- 有些球队在某些回合中不会是合法的选择
细节
特定球队在特定回合中的得分是他们参加的比赛的分差。如果他们赢了,则为正数,如果他们输了,则为负数
给定的选择可能被禁止有两个可能的原因。可能永远不会选择排名最低的球队的对手(可能会在轮次之间改变)。在某些比赛中可能会出现轮空,受影响的球队也可能不会被选中。
例子
考虑以下示例,括号中的数字是该球队在该轮比赛中的得分,而*
表示与排名垫底的球队比赛的球队,因此无法在该轮比赛中被选中。
Round 1: Team A* (+26) vs Team B (-26), Team C (-15) vs Team D (+15)
Round 2: Team A (+75) vs Team C (-75), Team B (+ 5) vs Team D* (- 5)
Round 3: Team A (+85) vs Team D (-85), Team B* (- 3) vs Team C (+ 3)
Round 4: Team A ( 0) vs Team B ( 0), Team C (+12) vs Team D* (-12)
在这种情况下,最好的组合是选择:
- 第一轮:D(+15)
- 第二轮:B(+5)
- 第三轮:A(+85)
- 第4轮:C(+12)
注意:我创建的示例不包括任何带轮空的回合。它也不需要为可能的最佳总分选择负分,尽管这显然是可能的。
已知解决方案
显然,在团队或回合数较少的情况下,您可以通过尝试每种组合来强制执行此操作。有没有办法为更多的团队和回合(比如 20 个?)解决这个问题。