Algorithm 游戏拼图,两名玩家玩替换硬币价值的游戏

Algorithm 游戏拼图,两名玩家玩替换硬币价值的游戏,algorithm,data-structures,dynamic-programming,game-theory,Algorithm,Data Structures,Dynamic Programming,Game Theory,我们已经给了,n枚硬币,每枚都有一些面值k 现在,有两名球员,尼克和詹姆斯轮流玩游戏。在每一轮中,玩家可以选择任意一枚硬币,并将其替换为多枚面值总和等于替换硬币的硬币。每枚新硬币的面值必须相同。整数p也被给出,这是一个限制,表示玩家不能使用面值小于p的硬币进行替换。 所有玩家都提供了数量不限、面值不限的硬币 因此,样本输入将是n,k,p,其中n是硬币的数量,每个面值为k,限制p如上所述。如果双方都打得很好,尼克先发,谁将赢得比赛。如果一个玩家不能玩游戏,他就失去了游戏,这意味着他不能替换任何硬币

我们已经给了,n枚硬币,每枚都有一些面值k

现在,有两名球员,尼克和詹姆斯轮流玩游戏。在每一轮中,玩家可以选择任意一枚硬币,并将其替换为多枚面值总和等于替换硬币的硬币。每枚新硬币的面值必须相同。整数p也被给出,这是一个限制,表示玩家不能使用面值小于p的硬币进行替换。 所有玩家都提供了数量不限、面值不限的硬币

因此,样本输入将是n,k,p,其中n是硬币的数量,每个面值为k,限制p如上所述。如果双方都打得很好,尼克先发,谁将赢得比赛。如果一个玩家不能玩游戏,他就失去了游戏,这意味着他不能替换任何硬币


这是nim问题游戏还是DP游戏?我们如何解决这个问题?

这绝对是一种正确思考的游戏:这是一个两人游戏,意味着两个玩家随时都知道完整的游戏状态,没有机会,这是一个意味着两个玩家都可以使用相同的移动的游戏,如果你不能移动,你就输了。因此,这个规则适用于这个游戏;比赛中的每个位置都相当于一个球。我们可以通过计算一个位置的灵巧度来求解一个位置,从而找出在给定的最佳发挥下谁将获胜;当且仅当敏捷度不为零时,一个位置是第一个玩家获胜

然而,对于这个特定的问题来说,这是完全不必要的,因为所有处于起始位置的硬币都具有相同的价值

如果硬币数量为偶数,则玩家2通过镜像策略获胜。配对硬币,然后对手在一枚硬币上的任何移动,镜像在另一枚硬币上的移动。成对匹配生成的硬币,并继续在其上镜像

如果硬币数量为奇数,则玩家1通过将其中一枚硬币拆分为最小可能值>=p的硬币来获胜,这样就不能在这些硬币上进行更多的移动。然后玩家1对剩余的硬币采用上面给出的镜像策略,剩余的硬币数量为偶数

有一种特殊情况:如果硬币的面值已经使得玩家1无法移动,那么玩家2总是赢,不管硬币的数量是奇数还是偶数


所以答案是:当且仅当n为奇数且k的系数>=p时,玩家1获胜。显然,不会有更有效的解决方案。

有任何限制吗?n、k和p有多大?谢谢你的解释。