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