이 글에서는 XOR이 0인 특정 고유 숫자 배열에서 고유 트리플(x,y,z)의 개수를 계산하는 방법에 대해 설명합니다. 따라서 세 가지 요소가 모두 고유한 트리플은 고유해야 하며 모든 트리플의 조합은 다음과 같이 계산됩니다. −
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.
우리는 동일한 값에 대한 XOR 연산을 알고 있습니다. 결과는 항상 0입니다. 따라서 고유한 트리플을 찾는 낙관적인 접근 방식은 배열에 있는 두 값의 XOR 결과를 찾아 저장한 다음 해당 결과와 동일한 값을 배열에서 검색하는 것입니다. 또한 결과 값은 어떤 값 쌍과도 같아서는 안 됩니다.
#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
이 기사에서는 XOR 값이 0인 트리플 수를 찾는 방법에 대해 논의했습니다. 우리는 고유한 트리플을 찾는 낙관적 접근 방식에 대해 논의했습니다. 우리는 또한 C++에서 이 문제를 해결하는 프로그램에 대해서도 논의했습니다. 하지만 이 프로그램을 Java, C, Python 등과 같은 다른 프로그래밍 언어로 작성할 수 있습니다. 이 기사가 도움이 되기를 바랍니다.
위 내용은 C++를 사용하여 XOR이 0인 고유 트리플 수 찾기의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!