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

Xây dựng một mảng từ XOR của tất cả các phần tử của mảng ngoại trừ phần tử có cùng chỉ mục trong C ++

Giả sử chúng ta có một mảng A [] với n phần tử dương. Chúng ta phải tạo một mảng B khác, sao cho B [i] là XOR của tất cả các phần tử của A [] ngoại trừ A [i]. Vì vậy, nếu A =[2, 1, 5, 9] thì B =[13, 14, 10, 6]

Để giải quyết điều này, đầu tiên chúng ta phải tìm XOR của tất cả các phần tử của A và lưu nó vào biến x, sau đó với mỗi phần tử của A [i], tìm B [i] =x XOR A [i]

Ví dụ

#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] << " ";
}

Đầu ra

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