님의 게임이라는 이 문제에서 , 돌 더미를 나타내는 양의 정수 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