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

Trò chơi Nim trong C ++


Giả sử chúng ta đang chơi một trò chơi có tên là Nim Game với một người chơi khác. Có một đống đá, mỗi lần một người chơi sẽ thay phiên nhau bỏ 1 đến 3 viên đá. Người bỏ được viên đá cuối cùng sẽ là người chiến thắng. Người chơi 1 sẽ thực hiện lượt đầu tiên để loại bỏ các viên đá. Cả hai người chơi đều rất thông minh và có những chiến lược tối ưu cho trận đấu. Chúng tôi phải đặt ra một thuật toán để xác định xem người chơi 1 có thể thắng trò chơi hay không với số lượng đá trong đống.

Vì vậy, nếu đầu vào là 5, thì đầu ra sẽ là true, vì có 5 viên đá, vì vậy lúc đầu, nếu người chơi 1 lấy một viên đá, thì người chơi thứ hai có thể lấy 1 đến 3 viên đá , sẽ còn lại ít nhất một viên đá sau lượt của người chơi 2, vì vậy người chơi 1 có thể giành chiến thắng.

Điều này có thể được giải quyết bằng một bước đơn giản -

  • trả về true khi n mod 4 không giống 0, ngược lại là false

Ví dụ

Hãy cùng chúng tôi xem cách triển khai sau để hiểu rõ hơn -

#include <bits/stdc++.h>
using namespace std;
class Solution {
public:
   bool canWinNim(int n) {
      return n%4!=0;
   }
};
main(){
   Solution ob;
   cout << (ob.canWinNim(5));
}

Đầu vào

5

Đầu ra

1