C++ 中的 Nim 游戏
c++server side programmingprogramming
假设我们正在和另一个玩家玩一个名为 Nim 游戏的游戏。游戏中有一堆石子,每次轮流移除 1 到 3 块石子。移除最后一块石子的人获胜。玩家 1 先移除石子。两位玩家都非常聪明,并且都拥有最佳的游戏策略。我们必须设计一个算法,根据石子堆中的石子数量,判断玩家1能否赢得游戏。
因此,如果输入是5,那么输出将为true,因为有5个石子。所以一开始,如果玩家1拿走1个石子,那么第二个玩家可以拿走1到3个石子,在玩家2轮到之后至少会剩下1个石子,所以玩家1可以获胜。
这个问题可以通过一个简单的步骤 − 来解决。
当 n mod 4 不等于 0 时返回 true,否则返回 false
示例
让我们看下面的实现,以便更好地理解 −
#include <bits/stdc++.h> using namespace std; class Solution { public: bool canWinNim(int n) { return n%4!=0; } }; main(){ Solution ob; cout << (ob.canWinNim(5)); }
输入
5
输出
1