我遇到了以下问题,
2名玩家玩游戏。在每个回合中,两个玩家都接收-x到+ x(包括两者)范围内的分数。玩家1从得分p1开始,玩家2从得分p2开始。如果他们总共进行了5次转弯,找到玩家1赢得比赛的总方式,即在k转弯结束时,玩家1的得分高于玩家2。
所以简而言之,我的理解是我们需要找到player1和player2的积分组合总数,使得(玩家1的积分总和) - (玩家2的积分总和)> = p2 -p1 + 1
我不确定如何解决这个问题。请建议一种方法。提前谢谢。
答案 0 :(得分:1)
递归地解决这个问题。使用您的变量,让我们看看案例:让
score_range = [-x : x]
调用函数win_count
基本情况,k == 1
如果k == 1
,则转一圈。得分差异为p2-p1。如果玩家2在这轮中获得n2
分,那么玩家1需要在本轮中至少获得(p2 + n2) - p1 + 1
分。现在,p1, p2 in score_range
可以使用多少种组合?您可以直接从给定的整数计算出来。
将该计数作为功能值返回。
递归案例,k> 1 强>
了解本轮所有可能的分数。重复计算游戏剩余部分的可能性。
count = 0
for n1 in score_range
for n2 in score_range
count += win_count(p1+n1, p2+n2, k-1, x)
你能从那里拿走吗?