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

Tìm số cặp trong một mảng sao cho XOR của chúng bằng 0 bằng cách sử dụng C ++.

Giả sử chúng ta có một mảng gồm n phần tử; chúng ta phải tìm một số cặp trong mảng có XOR sẽ bằng 0. Cặp (x, y) có XOR bằng 0 thì x =y. Để giải quyết nó, chúng ta có thể sắp xếp mảng, sau đó nếu hai phần tử liên tiếp giống nhau, hãy tăng số lượng. Nếu tất cả các phần tử đều giống nhau, thì lần đếm cuối cùng có thể không được tính. Trong trường hợp đó, chúng tôi sẽ kiểm tra xem phần tử cuối cùng và phần tử đầu tiên có giống nhau hay không, nếu giống nhau, sau đó tăng số lượng lên 1.

Ví dụ

#include<iostream>
#include<algorithm>
using namespace std;
int countPairs(int arr[], int n) {
   int count = 0;
   sort(arr, arr+n);
   for(int i = 0; i<n - 1; i++){
      if(arr[i] == arr[i+1]){
         count++;
      }
   }
   if(arr[0] == arr[n-1])
      count++;
   return count;
}
int main() {
   int arr[] = {1, 2, 1, 2, 4};
   int n = sizeof(arr)/sizeof(arr[0]);
   cout << "Number of pairs: " << countPairs(arr, n);
}

Đầu ra

Number of pairs: 2