LeetCodeNim 游戏
292. Nim 游戏 - 力扣(LeetCode)
题目描述两个人和你的朋友一起玩 Nim 游戏:
- 桌子上有一堆石头。
- 你轮流做自己的回合, 你作为先手 。
- 每一轮,轮到的人都会把它取下来 1 - 3 块石头。
- 拿下最后一块石头的人是赢家。
假设你的每一步都是最好的解决方案。请写一个函数来判断你是否可以在给定的石头数量为 n
赢得游戏。如果你能赢,回去 true
;否则,返回 false
。
示例 1:
输入:n = 4输出:false 说明:以下是可能的结果:1. 移除一块石头。你的朋友移走了三块石头,包括最后一块。你的朋友赢了。2. 移除两块石头。你的朋友移走了两块石头,包括最后一块。你的朋友赢了。3.你移走了三块石头。你的朋友移走了最后一块石头。你的朋友赢了。在所有的结果中,你的朋友都是赢家。
示例 2:
输入:n = 1输出:true
示例 3:
输入:n = 2输出:true
提示:
1 <= n <= 231 - 1
巴什博弈
只有一堆n个物品,两个人轮流从这堆物品中取出物品, 规定每次至少取一个,最多取m个。最后,取光者获胜。 只要 n 不能整除 m+1 ,那一定是先手取胜,否则后手取胜
代码C++class Solution {public: bool canWinNim(int n) { return n % 4 != 0; }};
Javaclass Solution { public boolean canWinNim(int n) { return n % 4 != 0; }}