用 C++ 玩尼姆遊戲


假設我們正在玩一個叫做尼姆遊戲的兩人遊戲。遊戲有一堆石子,每次一個玩家輪流拿走 1 到 3 塊石子。拿走最後一塊石子的玩家將獲勝。玩家1 將率先拿走石子。兩位玩家都很聰明,並對遊戲有最優策略。我們需要設計一種演算法來確定給定一堆石子數量的情況下玩家1 是否能夠贏得比賽。

因此,如果輸入為 5,則輸出將為 true,因為有 5 塊石子,所以一開始,如果玩家1 拿走一塊石子,那麼第二個玩家可以拿走 1 到 3 塊石子,玩家2 行動後至少會留有一塊石子,因此玩家1 可以獲勝。

可以使用一個簡單步驟來解決這個問題 -

  • 當 n 除以 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

更新於: 10-6-2020

979 次瀏覽

開始你的職業生涯

完成課程,獲得認證

開始
廣告