在 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
廣告
資料結構
網路
RDBMS
作業系統
Java
iOS
HTML
CSS
Android
Python
C 程式設計
C++
C#
MongoDB
MySQL
Javascript
PHP