在本文中,我們將討論在給定的唯一數字數組中計算唯一三元組(x,y,z)的數量,其中它們的異或為0 。因此,三元組應該是唯一的,其中所有三個元素都是唯一的,並且將計算所有三元組的組合,例如−
Input : arr[ ] = { 5, 6, 7, 1, 3 } Output : 2 Explanation : triplets are { 5, 6, 3 } and { 6, 7, 1 } whose XOR is zero. Input : arr[ ] = { 3, 6, 8, 1, 5, 4 , 12} Output : 3 Explanation : Triplets are { 3, 6, 5 }, { 1, 5, 4 } and { 4, 8, 12 } whose XOR is zero.
#我們知道相同值的異或運算結果總是零。因此,我們要尋找獨特的三元組,可以採用一種樂觀的方法,即找到數組中兩個值的異或結果,並將結果儲存起來,然後在數組中搜尋等於該結果的值。此外,結果的值不應與任何一對值相等。請查看
#include <bits/stdc++.h> using namespace std; int main () { int arr[] = { 3, 6, 8, 1, 5, 4, 12 }; int n = sizeof (arr) / sizeof (arr[0]); int result; // count variable to keep count of pairs. int count = 0; // creating a set to store unique numbers . unordered_set < int >values; // inserting values in set. for (int i = 0; i < n; i++) values.insert (arr[i]); // traverse for all pairs to calculate XOR. for (int i = 0; i < n - 1; i++) { for (int j = i + 1; j < n; j++) { // finding xor of i, j pair. int XR = arr[i] ^ arr[j]; // checking if XOR value of pair present in array // and value should not be in pairs. if (values.find (XR) != values.end () && XR != arr[i] && XR != arr[j]) count++; } } // storing result result = count / 3; cout << "Number of unique triplets : " << result; return 0; }
Number of unique triplets : 3
本文討論瞭如何找到具有異或值為0的三元組的數量;我們討論了一種樂觀的方法來找到唯一的三元組。我們也討論了用C 解決這個問題的程序。然而,我們可以用其他程式語言如Java、C、Python等來寫這個程式。希望本文對您有幫助。
以上是使用C++找到XOR為零的獨特三元組的數量的詳細內容。更多資訊請關注PHP中文網其他相關文章!