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

相关文章