不确定这是否是一个适合SO的问题,但这里是:
我对计算联盟中球队的最高和最低排名所需的逻辑感兴趣。
以英超联赛为例。这个联盟有20支球队。每支球队都会在主场迎战联盟中的所有其他球队。这意味着每支球队都会交手两次(一次主场,一次客场),因此一个赛季将进行 38 场比赛。
一场比赛可以以三种结果之一结束:主场获胜、平局或客场获胜。球队获胜可得 3 分,平局可得 1 分。这意味着一支球队在单个赛季中可以获得的最大积分为 114 (38*3)。
今年英超联赛积分榜的底部目前如下所示(位置、球队名称、出场次数、净胜球[进球数 - 失球数]、积分):
我想知道纽卡斯尔可能的最高和最低排名。
有理由认为,纽卡斯尔本赛季的最低排名将是第18名,就好像纽卡斯尔输掉了剩下的比赛,而低于他们的所有球队(除了无法追上纽卡斯尔的QPR和雷丁)都赢得了比赛,那么他们的总积分将高于纽卡斯尔(维冈的积分相同,但事实上他们将取得两场胜利,而纽卡斯尔将输掉一场,这意味着维冈将拥有更高的净胜球数[分开的机制]积分相同的球队])。
然而-(这是复杂的一点)-阿斯顿维拉本赛季的最后一场比赛是对阵维冈。因此,两队都不可能获得最高分。
所以我的问题是——在考虑到对手球队的剩余赛程的同时,准确确定联赛中给定球队的最高和最低名次的最佳方法是什么?我应该只查看每个剩余的固定装置并计算每个排列吗?或者有更聪明的方法来做到这一点吗?
您可以通过忽略不相关的来减少组合数量。
以下步骤用于找到尽可能低的位置。找到可能的最高位置将以类似的方式处理。
当考虑尽可能低的位置时,领先的球队是无关紧要的。
在剩余比赛中无法获得足够积分晋级纽卡斯尔的球队也无关紧要。
对于其余球队,将对阵不相关球队的每场比赛视为获胜。
上述步骤可以让更多的团队变得无关紧要。如果是这样,请重复上一步!
暴力破解剩余的比赛,即相关球队面对面的比赛。
我一直在独立研究这个问题的解决方案,现在已经有了使用真实数据来演示它的有效概念验证。我搜索了一下是否有其他人正在解决这个挑战,并提出了这个相当旧的线程。
如果还有兴趣,很乐意分享我的链接、算法等?