拿硬币——动态规划

这篇博客探讨了一个拿硬币的游戏策略,通过动态规划分析如何在不同硬币数量下确保胜利。当有10个硬币时,后手玩家可以根据状态转移方程f(i)=(f(i-1)==0 || f(i-2)==0 || f(i-4)==0)制定制胜策略,确保从7枚硬币开始时能够赢得游戏。
摘要由CSDN通过智能技术生成

拿硬币


Question: 有10个硬币,我和你按顺序拿,每次可以拿1、2或者4个,拿到最后一个硬币的人输,你怎么确保自己可以获胜

(这个问题的有一个前提:双方都想赢,并且当遇到能赢的情况时,他们能做出正确的决策而不是随便决策)
这种问题,可以从简单情况先想起,:

  • 没有硬币剩下,则默认该轮次的人胜利。

  • 剩下一个硬币时,先手拿硬币的人输,后手赢;

  • 剩下两个硬币时,先手的人一下子拿两个,则先手输。
    先手的人拿一个,刚才推过,可以知先手赢。
    所以,面对这种情况,先手时你可以认为你赢定了。、

  • 剩下三个硬币时,先手的人如果只拿一个,剩下两个硬币,则我们刚才推过,这种情况你会输。
    先手的人如果拿两个,剩下一个硬币,你赢。
    所以,对于这种情况,先手的人也赢定了。

  • 剩下四个硬币时,先手的人拿四个,则先手人会输。
    先手如果拿两个,我们刚才推过,先手也输定了。
    先手如果拿一个,也是上面推过,先手输定了。

…..

依此下来,我们是不是发现,对于固定的剩余硬币数量,先手还是后手直接可以决定你的输赢。
其实,这是利用了动态规划的思想。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值