Computer >> Máy Tính >  >> Lập trình >> C ++

Trò chơi Nim với phép loại bỏ một viên đá trong C ++

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’ ‘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’ ‘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