Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> C++

Game XOR bảng粉笔 (Chalkboard XOR Game) trong C++

Mảng nums trên bảng. Ram và Sam luân phiên xóa 1 phần tử. Nếu sau khi xóa, XOR các phần tử còn lại = 0 thì người xóa thua. Nếu bắt đầu lượt với XOR = 0 thì người đó thắng. Xác định Ram có thắng không.

Quan sát quan trọng

  • Nếu XOR tổng ban đầu = 0 → Ram thắng ngay.
  • Nếu số phần tử chẵn → Ram luôn thắng (chiến lược đối xứng).
  • Ngược lại Ram thua.

Chương trình C++

#include <bits/stdc++.h>
using namespace std;

class Solution {
public:
    bool xorGame(vector<int>& nums) {
        int n = nums.size();
        int x = 0;
        for(int v : nums) x ^= v;
        return x == 0 || n % 2 == 0;
    }
};

int main() {
    Solution ob;
    vector<int> v = {1,2,1};
    cout << ob.xorGame(v); // 0 (false)
    return 0;
}

Kết quả

0