292. Nim 游戏

 

 

 

拿到题目想到了以前学过的博弈论,这里是比较简化的,对于本题,我们可以把

不同情况下先手的输赢结果列出来看。参考如下分析,我们可以得知,

当 N = 3N=3 的时候,当前做出选择的人可以拿掉最后一块石头,获得胜利;
然后我们逐层向上分析,当 N = 4N=4 的时候,无论当前做出哪一种选择,对方都会赢,所以当前只能输掉比赛;
如果当前这一层的结点里「有输有赢」,因为我们「足够聪明」,所以必须选择可以让对方输掉的分支,好让自己赢;
对于这个问题的特点是,当 NN 不是 44 的倍数的时候,先手(当前做出选择的人),或者说游戏一开始做出选择的玩家一定会输。

原文地址:https://leetcode-cn.com/problems/nim-game/solution/ji-yi-hua-di-gui-dong-tai-gui-hua-guan-cha-gui-lu-/

 

 

1     public boolean canWinNim(int n) {
2         return (n%4)!=0;
3     }

 

posted @ 2021-05-07 09:47  jchen104  阅读(42)  评论(0编辑  收藏  举报