Computer >> คอมพิวเตอร์ >  >> การเขียนโปรแกรม >> C++

ค้นหาจำนวนคู่ในอาร์เรย์ที่ XOR ของพวกเขาเป็น 0 โดยใช้ C ++


สมมติว่าเรามีอาร์เรย์ของ n องค์ประกอบ เราต้องหาคู่จำนวนหนึ่งในอาร์เรย์ที่ XOR จะเป็น 0 คู่ (x, y) ที่ XOR เป็น 0 แล้ว x =y เพื่อแก้ปัญหานี้ เราสามารถจัดเรียงอาร์เรย์ได้ ถ้าองค์ประกอบสององค์ประกอบที่ต่อเนื่องกันเหมือนกัน ให้เพิ่มจำนวนขึ้น หากองค์ประกอบทั้งหมดเหมือนกัน การนับครั้งสุดท้ายจะไม่ถูกนับ ในกรณีนั้นเราจะตรวจสอบว่าองค์ประกอบสุดท้ายและองค์ประกอบแรกเหมือนกันหรือไม่หากเหมือนกันให้เพิ่มจำนวนขึ้น 1

ตัวอย่าง

#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);
}

ผลลัพธ์

Number of pairs: 2