可以用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
推廣