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

สร้างอาร์เรย์จาก XOR ของทุกองค์ประกอบยกเว้น Index เดียวกันใน 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