用递推法解决简单博弈类问题

这个问题是在编程爱好者论坛上看到的,不过原题叙述得不太清楚。我将它改动了一下:

有n个桃子,两只猴子一大一小。两只猴子轮流取走桃子,规定每只猴子每次只能取1~3个,且小猴先取。最后手中桃子数为偶数者为胜方。问题是给定一正整数n,小猴有没有必胜的策略。

其实问题的解决方法十分简单。假设n很小,小到什么程度?先让它等于1试试吗,显示小猴不可能胜,因为它最少也要取走一个,同时也就结束了。n比较小的时候,结果是显而易见的:

n

小猴能否必胜

1

2

3

4

对于n=4的情况比较特殊,此时小猴如果取三个,那么接下来的大猴只能面对一个桃子,而n=1时又是败局,所以n=4时就认为小猴能必胜。

接下去就好理解了,当n=5时,小猴无论怎样取,接下来大猴面对的都是有必胜策略的情况,因此这时小猴无法必胜。如此递推下去,可以得出:当且仅当n mod 4=1时,小猴无必胜策略。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值