首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >改进的Nim方法的研究

改进的Nim方法的研究
EN

Stack Overflow用户
提问于 2019-05-06 18:35:31
回答 1查看 370关注 0票数 1

这最终是尼姆的游戏,经过一定的修改。

规则如下:

有两个球员A和B。

这场比赛有两堆火柴。最初,第一堆包含N个匹配,第二个包含M匹配。

球员交替转弯;A先上场。

在每一回合,当前玩家必须选择一堆,并移除一个正数的匹配(不超过该堆上当前的匹配数)。

只有当另一桩中的匹配数除以X时,才允许从一个桩中删除X个匹配项。

从任何一堆中取得最后一场比赛的选手获胜。

两位球员都发挥得很好。

我的看法:

假设我们有2桩2 7,我们有3例可以将第2桩减少到wiz :2 1,2 3,2 5,如果A在最优的情况下,他/她会选择2 3,这样B剩下的唯一机会是2 1,然后A可以0 1获胜。解的外壳是,如果A或B遇到任何可能在下一步中直接失败的情况,那么它将尽力避免它,并利用这种情况对他们有利,只需在失去阶段前一步离开。

但是对于一些未知的测试用例,这种方法失败了,是否有更好的方法来找到胜利者,或者任何其他违背这一逻辑的测试用例。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-05-06 21:43:30

这是一个典型的动态规划问题。首先,找出一个重复的关系,用小游戏来描述一个游戏的结果。这里的参数是X和Y,其中X是一个堆栈中的匹配数,另一个是Y。如何减少这个问题?

那么,假设现在轮到我处理X匹配,假设Y可以被数字a1、a2和a3整除,而x可以被b1、b2、b3整除。然后,我有六个可能的转弯。该问题归结为(X-a1,Y) (X-a2,Y) (X-a3,Y),(X,Yb1),(X,Yb2),(X,Yb3).一旦这六个小游戏解决了,如果其中一个对我来说是一个胜利的游戏,那么我做出相应的动作并赢得这个游戏。

还有一个参数,那就是轮到谁了。这使可解决问题的规模翻了一番。

关键是找到所有可能的动作,并对其中的每一个重复,保持一个存储已解决的游戏效率。

基本情况需要自然解决。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56010643

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档