Computer >> 컴퓨터 >  >> 프로그램 작성 >> C++

C++에서 허용되는 하나의 돌을 제거하는 님의 게임

<시간/>

님의 게임이라는 이 문제에서 , 돌 더미를 나타내는 양의 정수 N이 주어지고 두 명의 플레이어가 있습니다. 'playerA''플레이어B' . 우리의 임무는 님의 게임의 승자를 예측하는 프로그램을 만드는 것입니다.

NIM 게임 − 우리는 돌 더미와 두 명의 플레이어 'playerA'를 가지고 있습니다. 및 '플레이어B' . 각 플레이어는 '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이 1이면 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