可以用C++的遊戲,允許去除一顆石頭


在這個名為遊戲中的零和遊戲的問題中,我們得到了一個表示石頭堆的正整數N,並且有兩位玩家‘playerA’‘playerB’。我們的任務是建立一個程式來預測零和遊戲中的贏家。

零和遊戲 - 我們有一堆石頭和兩位玩家‘playerA’‘playerB’。如果‘playerA’開始從堆中拿走一塊石頭,那麼每位玩家都可以從堆中拿走一塊石頭。我們需要預測遊戲的贏家。從堆中拿走最後一塊石頭的玩家是遊戲的贏家。

讓我們舉一個例子來理解這個問題

Input: N = 6
Output: playerB
Explanation :
Total stones = 6, players picking stones as
playerA - playerB - playerA - playerB - playerA - playerB

解決方法

一種解決問題的方法是針對N的值和遊戲的贏家找到一般公式。讓我們看看N的幾個值,以及每種情況下的贏家,

N = 1,贏家 = playerA

N = 2,贏家 = playerB

N = 3,贏家 = playerA

由此,我們可以得出結論:如果N為奇數,playerA是贏家。如果N為偶數,playerB是贏家。

示例

演示我們解決方案工作原理的程式

#include<iostream>
using namespace std;

bool findGameofNimWinner(int N){
   if(N%2 == 0)
      return 0;
   else
      return 1;
}
int main(){

   int N = 26;
   cout<<"The winner of the Game of Nim is ";
   findGameofNimWinner(N) ? (cout << "Player A") : (cout << "Player B");
   return 0;
}

輸出

The winner of the Game of Nim is Player B

更新於: 2022 年 2 月 1 日

176 瀏覽

開啟你的 職業 生涯

透過完成課程獲取認證

開始
推廣