玩家1可以在2人游戏中获胜的方法数量
我遇到了下面这个问题,
2个玩家玩游戏。 在每个回合中,双方球员都会得到-x至+ x的范围内的积分(均包括在内)。 玩家1从分数p1开始,玩家2从分数p2开始。 如果他们总共进行k次转弯,找出玩家1可以赢得比赛的总数,即在k转结束时,玩家1比玩家2多得多。
所以总之我的理解是我们需要找出player1和player2的组合点集的总数,使得(玩家1的点集总和) - (玩家2的点集总和)> = p2-p1 + 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)
你可以从那里拿走吗?
链接地址: http://www.djcxy.com/p/30705.html上一篇: Count number of ways player 1 can win in a 2 player game
下一篇: Solving a graph game