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