用于确定联盟中球队的最高和最低可能完成位置的算法

时间:2013-05-14 08:59:03

标签: algorithm language-agnostic

不确定这是否是适合SO的问题,但请注意:

我感兴趣的是能够计算联盟中球队最高和最低完成位置所需的逻辑。

以英超联赛为例。这个联盟有20支球队。每支球队都会在主场迎战联盟中的其他球队。这意味着每支球队互相比赛两次(一次在主场,一次在外),因此一个赛季将打38场比赛。

游戏可以以三个结果中的一个结束 - 主场胜利,平局或客场胜利。球队获胜3分,平局1分。这意味着团队在一个赛季中可以达到的最高积分是114(38 * 3)。

今年英超联赛表的底部目前看起来像这样(位置,球队名称,比赛,目标差异[进球得分 - 失球],分数):

Premier League as at 14/5/13

我想知道纽卡斯尔最高和最低的完成位置。

认为纽卡斯尔本赛季的最低排名将是第18名,就好像纽卡斯尔输掉剩下的比赛,以及他们下面的所有球队(除了QPR和雷丁都无法抓住纽卡斯尔队)赢得胜利,这是理性的。他们的比赛,然后他们的积分将高于纽卡斯尔(维冈将是相同的,但事实上,他们将有两场胜利,而纽卡斯尔将有一次失利将意味着维冈将有一个更好的目标差异[机制分离等分的队伍。)。

然而 - (这是复杂的一点) - 阿斯顿维拉本赛季的最后一场比赛是对阵维冈。因此,两支球队都无法获得最高分。

所以我的问题是 - 哪个是准确确定联盟中特定球队最高和最低可能完成位置的最佳方式,同时考虑到对手球队的剩余赛程?我应该只查看每个剩余的夹具并计算每个排列吗?或者有更聪明的方法吗?

1 个答案:

答案 0 :(得分:4)

您可以通过忽略不相关的数量来减少组合数量。

以下步骤用于找到可能的最低位置。找到最高位置将以类似的方式处理。

在考虑最低位置时,前方的球队无关紧要。

在其余比赛中,无法获得足够积分进入纽卡斯尔的球队也无关紧要。

对于剩余的球队,请将每场比赛视为不相关的球队。

上述步骤可以让更多团队无关紧要。如果是,请重复上一步!

对剩余的游戏进行暴力破解,即相关团队彼此面对的游戏。