【博弈论】巴什博奕

故事是这样的

小涵对小李说我们来玩一个拿球游戏,你说桌子上有多少个球,每次可以拿1到3个球,最后谁拿光桌子上的球谁就赢了

小李:30个球,你先拿

小涵:2个(剩28)
小李:1个(剩27)
小涵:3个(剩24)
(青蛙开始感觉水温不太对)
小李:3个(剩21)
小涵:1个(剩20)
小李:2个(剩18)
小涵:2个(剩16)
小李:1个(剩15)
小涵:3个(剩12)
小李:3个(剩9)
小涵:1个(剩8)
小李:2个(剩6)
小涵:2个(剩4)

在这里插入图片描述
随后小李尝试了29个,31个最终都没能得逞(青蛙发现了水温不对但是没能成功跳出来)

但是聪明的小李开始了思考,怎样就是一个必输的状态呢?

到最后,在游戏规则的前提下,没办法进行操作了,那么就是输了,看看输掉的这几局,我们发现最后剩下的球是4个,那么当前这个人就没办法操作了,不管拿几个,都会剩下能一次拿完的数量的球。换句话说,我们要是能在最后轮到对方拿球的时候给他剩下的是4个,那么我们就赢了

现在来想,怎么能给他剩下4个球呢,我们得提前就算好一种能够必胜的策略,否则到后面球少了对方可能就也算出来了,我们把球按4个4个的分堆,每次呢都让对方先拿球,这样对方拿n(1-3)个我们就拿(4-n)个,就可以保证我们胜利了,但是前提是桌上的球得正好是4的倍数,也就是说

num % 4 == 0 //num是球的总数

这个时候,先手是必输的

如果

num % 4 != 0 //num是球的总数

我们先手给他拿掉多于出来的,就是总数对4取余的数量,比如29个球,就先手拿了1个,这时候就变成了28个球(4 * 7 = 28)对方先手拿,他必输
(终于,青蛙把火关掉了,水温逐渐下降)

巴什博奕
上面说的这个游戏其实是有一个专业名词的,叫巴什博奕(可以自行百度一下)
我就通俗的解释个大概我了解的:

一堆物品有N个,每次可以拿M个(M<N)
如果(N mod M == 0)
先手必败
具体的东西上面已经分析过了,就是换成个N和M整成个公式,说一下不一定非要是每次拿1-3个,每次拿8个也能想办法获胜,就凑M+1就行了

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值