Trong bài toán này được gọi là trò chơi của Nim , chúng tôi được cung cấp một số nguyên dương N biểu thị đống đá và có hai người chơi ‘playerA’ và ‘playerB’ . Nhiệm vụ của chúng tôi là tạo một chương trình dự đoán người chiến thắng trong Trò chơi Nim.
TRÒ CHƠI CỦA NIM - Chúng tôi có một đống đá và hai cầu thủ ‘playerA’ và ‘playerB’ . Mỗi người chơi có thể chọn một cửa hàng từ đống nếu ‘playerA’ bắt đầu chọn một viên đá từ đống. Chúng tôi cần dự đoán người chiến thắng trong trò chơi. Người chơi cuối cùng chọn đá từ đống là người chiến thắng trò chơi.
Hãy lấy một ví dụ để hiểu vấn đề
Input: N = 6 Output: playerB Explanation : Total stones = 6, players picking stones as playerA - playerB - playerA - playerB - playerA - playerB
Phương pháp tiếp cận giải pháp
Một phương pháp để giải quyết vấn đề là tìm công thức chung cho các giá trị của N và người chiến thắng trong trò chơi. Hãy xem một số giá trị của N và giá trị thắng lợi trong mỗi trường hợp,
N =1, winner =playerA
N =2, người chiến thắng =người chơiB
N =3, winner =playerA
Từ đó, chúng ta có thể suy ra rằng nếu N lẻ, người chơiA là người chiến thắng. Và nếu N bằng một, người chơiB là người chiến thắng.
Ví dụ
Chương trình minh họa hoạt động của giải pháp của chúng tôi
#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; }
Đầu ra
The winner of the Game of Nim is Player B