이 게임에는 두 명의 플레이어 X와 Y가 있습니다. 우리의 임무는 둘 다 최적의 플레이를 하고 X가 게임을 시작하는 경우 누가 게임에서 승리할지 예측하는 것입니다.
게임
코인 게임에는 N과 M개의 코인이 있는 두 개의 더미가 있습니다. 플레이어 중 한 명이 게임에 사용할 더미 중 하나를 선택합니다. 그런 다음 한 플레이어가 더 이상 더미를 나눌 수 없을 때까지 더미를 두 개의 반으로 나누는 작업입니다.
문제를 이해하기 위해 예를 들어보겠습니다.
Input: M = 2 , N = 2 Output:X
설명 - X는 게임을 시작하고 M 더미(둘 다 동일)를 선택하고 더미를 둘로 나눕니다. 이제 각각에는 하나의 동전만 포함되므로 Y는 이동하지 않고 남게 됩니다. 이것은 X를 이길 것입니다.
이 문제를 해결하려면 플레이어 X가 이길 확률을 봐야 합니다. 플레이어 X가 승리하는 경우는 더미 중 하나에 짝수 개의 동전이 있을 때입니다. 그렇지 않으면 Y가 승자가 됩니다.
로직 구현을 보여주는 프로그램
예시
#include <iostream> using namespace std; int isXWinner(int M, int N) { if (M % 2 == 0 || N % 2 == 0) return 1; return 0; } int main() { int M = 1, N = 2; cout<<"Game Starts!\n"; if(isXWinner(M,N)) cout<<"Player X is the Winner"; else cout<<"Player Y is the Winner"; return 0; }
출력
Game Starts! Player X is the Winner