题目描述
你和你的朋友,两人一起玩 Nim 游戏:桌子上有一堆石头,每次你们轮流拿掉
1-3
块石头,你作为先手,拿掉最后一块石头的人获胜。你们是聪明人,每一步都是最优解。编写一个函数,来判断你是否可以在给定石头数量的情况下赢得游戏。
Try it on Leetcode
输入示例
Input : 4
Output : false
如果堆中有4
块石头,那么你永远不会赢得游戏,因为最后一块石头总是会被你的朋友拿走。
巴什博弈(Bash Game)
根据 巴什博奕,若有:
n % (m + 1) != 0
则可知先手必胜。
Java 实现
class Solution {
public boolean canWinNim(int n) {
// Bash Game - n % (m + 1) != 0. First will win.
return n % 4 != 0;
}
}