<p>因此,在本例中,第一个解决方案(多数赢=最少的游戏值点数)将非常简单地是<code>wins = total // 3</code>,<code>ties = total % 3</code>,<code>losses = games - wins - ties</code></p>
<p>显然,如果我们有<code>losses < 0</code>,那么我们在这里失败并返回空列表。你知道吗</p>
<p>否则,您可以使用第一个解决方案并迭代:</p>
<pre class="lang-py prettyprint-override"><code>wins -= 1
ties += 3
losses -= 2
</code></pre>
<p>在你得到<code>wins < 0</code>或<code>losses < 0</code>之前,这不会改变本赛季的总积分或总比赛次数</p>
<p>在代码中:</p>
<pre class="lang-py prettyprint-override"><code>def enumerate_season_records(games_played, points_earned):
"""Returns a list of tuples in the form (wins, ties, losses)"""
wins = points_earned // 3
ties = points_earned % 3
losses = games_played - wins - ties
possible_season_records = []
while wins >= 0 and losses >= 0:
record = (wins, ties, losses)
possible_season_records.append(record)
wins -= 1
ties += 3
losses -= 2
return possible_season_records
</code></pre>
<p>请注意,这种简单的解决方案是可行的,因为点值的结果很好。一般情况是NP难的(参见:<a href="https://en.wikipedia.org/wiki/Change-making_problem" rel="nofollow noreferrer">https://en.wikipedia.org/wiki/Change-making_problem</a>)</p>