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

ค้นหาองค์ประกอบของอาร์เรย์โดยใช้ XOR ขององค์ประกอบที่ต่อเนื่องกันใน C++


พิจารณาว่าเราต้องหารายการขององค์ประกอบ n รายการ แต่เรามีค่า XOR ของสององค์ประกอบที่ต่อเนื่องกันของอาร์เรย์จริง นอกจากนี้ยังให้องค์ประกอบแรกของของจริง ดังนั้นหากองค์ประกอบอาร์เรย์คือ a, b, c, d, e, f ดังนั้นอาร์เรย์ที่กำหนดจะเป็น a^b, b^c, c^d, d^e และ e^f

เมื่อให้หมายเลขแรกชื่อ a ซึ่งสามารถช่วยให้เราค้นหาตัวเลขทั้งหมดได้ หากเราต้องการค้นหาองค์ประกอบที่สองของอาร์เรย์จริง เราต้องดำเนินการ b =a ^ arr[i] สำหรับองค์ประกอบที่สอง c =b ^ arr[1] เป็นต้น

ตัวอย่าง

#include<iostream>
using namespace std;
void findActualElements(int a, int arr[], int n) {
   int actual[n + 1];
   actual[0] = a;
   for (int i = 0; i < n; i++) {
      actual[i + 1] = arr[i] ^ actual[i];
   }
   for (int i = 0; i < n + 1; i++)
      cout << actual[i] << " ";
}
int main() {
   int arr[] = { 12, 5, 26, 7 };
   int n = sizeof(arr) / sizeof(arr[0]);
   int a = 6;
   findActualElements(a, arr, n);
}

ผลลัพธ์

6 10 15 21 18