你和你的朋友,两个人一起玩 Nim 游戏:
桌子上有一堆石头。
你们轮流进行自己的回合, 你作为先手 。
每一回合,轮到的人拿掉 1 - 3 块石头。
拿掉最后一块石头的人就是获胜者。
假设你们每一步都是最优解。请编写一个函数,来判断你是否可以在给定石头数量为 n 的情况下赢得游戏。如果可以赢,返回 true;否则,返回 false 。
来源:力扣(LeetCode)
链接:https://leetcode.cn/problems/nim-game
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。
找规律,其实就是逢4必输(4的倍数)
分类讨论:
当你摸走1张牌时,对手摸3张,对手获胜
当你摸走2张牌时,对手摸2张,对手获胜
当你摸走3张牌时,对手摸1张,对手获胜
之后每遇到4的倍数就是这个规律。
class Solution {
public boolean canWinNim(int n) {
return n%4==0?false:true;
}
}