拿到题目想到了以前学过的博弈论,这里是比较简化的,对于本题,我们可以把
不同情况下先手的输赢结果列出来看。参考如下分析,我们可以得知,
当 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 }