在 C++ 中根据除了同一索引处元素外的数组中所有元素的异或构造一个数组


假设我们有一个数组 A[],其中有 n 个正元素。我们必须创建一个新的数组 B,其中 B[i] 是 A[] 中除 A[i] 之外所有元素的异或。因此,如果 A = [2, 1, 5, 9],则 B = [13, 14, 10, 6]

为了解决这个问题,我们首先必须找出 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

更新日期:2019 年 12 月 30 日

175 次浏览

开启你的 职业生涯

完成课程即可获得认证

立即开始
广告