ในเกมนี้ มีผู้เล่นสองคน 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