玩家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