Chr*_*yne 12 language-agnostic algorithm
不确定这是否适合SO的问题,但是这里是:
我感兴趣的是能够计算联盟中球队最高和最低完成位置所需的逻辑.
以英超联赛为例.这个联盟有20支球队.每支球队都会在主场迎战联盟中的其他球队.这意味着每支球队互相比赛两次(一次在主场,一次在外),因此一个赛季将打38场比赛.
游戏可以以三种结果中的一种结束 - 主场胜利,平局或客场胜利.球队获胜3分,平局1分.这意味着团队在一个赛季中可以获得的最高积分是114(38*3).
今年英超联赛桌的底部看起来像这样(位置,球队名称,比赛,比赛差异[进球得分 - 失球],分数):

我想知道纽卡斯尔最高和最低的完成位置.
认为纽卡斯尔本赛季的最低位置将是第18名,就好像纽卡斯尔输掉剩下的比赛一样是理性的,而且他们下面的所有球队(除了QPR和雷丁都不能抓住纽卡斯尔队)赢得他们的比赛,然后他们的积分总数将高于纽卡斯尔(维冈的比赛将会相同,但事实上他们将获得两场胜利,而纽卡斯尔将有一次失利将意味着维冈将拥有更高的目标差异[分离球队的机制]谁在平等点上]).
然而 -(这是复杂的一点) - 阿斯顿维拉本赛季的最后一场比赛是对阵维冈.因此,两支球队都无法获得最高分.
所以我的问题是 - 哪个是准确确定联盟中特定球队最高和最低可能完成位置的最佳方式,同时考虑到对手球队的剩余赛程?我应该只查看每个剩余的夹具并计算每个排列吗?或者有更聪明的方法吗?
您可以通过忽略不相关的组合来减少组合数量。
以下步骤用于找到尽可能低的位置。寻找可能的最高位置将以类似的方式处理。
当考虑可能的最低位置时,领先的球队是无关紧要的。
在剩余比赛中无法获得足够积分晋级纽卡斯尔的球队也无关紧要。
对于其余球队,将对阵不相关球队的每场比赛视为获胜。
上述步骤可以让更多的团队变得无关紧要。如果是这样,请重复上一步!
对剩余的比赛进行暴力破解,即相关球队面对面的比赛。