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

สร้างอาร์เรย์จาก XOR ขององค์ประกอบทั้งหมดของอาร์เรย์ ยกเว้นองค์ประกอบที่ดัชนีเดียวกันใน C++


สมมติว่าเรามีอาร์เรย์ A[] ที่มีองค์ประกอบบวก n รายการ เราต้องสร้างอาร์เรย์ B ขึ้นมาอีกชุดหนึ่ง เพื่อให้ B[i] เป็น XOR ขององค์ประกอบทั้งหมดของ A[] ยกเว้น A[i] ดังนั้น ถ้า A =[2, 1, 5, 9] แล้ว B =[13, 14, 10, 6]

ในการแก้ปัญหานี้ ก่อนอื่นเราต้องหา XOR ขององค์ประกอบทั้งหมดของ A และเก็บไว้ในตัวแปร x จากนั้นสำหรับแต่ละองค์ประกอบของ A[i] ให้หา B[i] =x XOR A[i]

ตัวอย่าง

#include <iostream>
using namespace std;
void findXOR(int A[], int n) {
   int x = 0;
   for (int i = 0; i < n; i++)
   x ^= A[i];
   for (int i = 0; i < n; i++)
   A[i] = x ^ A[i];
}
int main() {
   int A[] = {2, 1, 5, 9};
   int n = sizeof(A) / sizeof(A[0]);
   cout << "Actual elements: ";
   for (int i = 0; i < n; i++)
   cout << A[i] << " ";
   cout << endl;
   cout << "After XOR elements: ";
   findXOR(A, n);
   for (int i = 0; i < n; i++)
   cout << A[i] << " ";
}

ผลลัพธ์

Actual elements: 2 1 5 9
After XOR elements: 13 14 10 6