Nim Game

You are playing the following Nim Game with your friend: There is a heap of stones on the table, each time one of you take turns to remove 1 to 3 stones. The one who removes the last stone will be the winner. You will take the first turn to remove the stones.

Both of you are very clever and have optimal strategies for the game. Write a function to determine whether you can win the game given the number of stones in the heap.

For example, if there are 4 stones in the heap, then you will never win the game: no matter 1, 2, or 3 stones you remove, the last stone will always be removed by your friend.

这里要求判断【先手能不能赢】,而不是问【先手一定赢】,所以命题的关键是找出【先手一定无法赢】的情况,也就是【必败局面】,那么,该条件的对立条件就是我们要的答案。而必败局面就是【后手一定赢】,那么后手一定赢的条件是什么呢?

要对数字敏感,这里每次只能取1-3个,也就是既不能不取,也无法取超过4个。必败就是不得不败、没有办法、无可奈何,这里的【4】就是一种【无可奈何】。也就是在一种情况下,后手可以掌控全局。那么接下来我们来分析一下后手可以掌控什么?

先手可以拿1-3个石头,后手接着可以拿1-3个石头,所以,在石头数量充足的情况下,后手可以控制一轮下来,两人拿走的总数在4,其他的事情他都办不到。先手拿1个,他最多拿3个,合起来4个;先手拿3,他最少拿一个,合起来还是4个。这下是不是觉得很有意思,在这个问题上我们与【4】有着不解之缘。

现在后手就要利用这个他可以【掌控全局】的bug特性。不管先手拿几个石头走,他都拿相应个数的石头,使一轮拿走的总数为【4】。那么,当石头总数满足什么条件时后手【必赢】呢?

很明显啦,当总数n为4的倍数的时候,最后一拨石头肯定就是后手拿走的啦!所以,解为:

n % 4 != 0

先手才有可能赢。

(上述分析只是一种感性分析,Nim Game是一个金典的博弈论问题,必胜策略直至20世纪初才被哈佛大学的一个叫做Charles Leonard Bouton的数学家找到,可见其思维难度。所以严谨的证明方法请参考其他资料。)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值