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