>백엔드 개발 >C++ >C++를 사용하여 XOR이 0인 고유 트리플 수 찾기

C++를 사용하여 XOR이 0인 고유 트리플 수 찾기

王林
王林앞으로
2023-09-08 18:09:051143검색

C++를 사용하여 XOR이 0인 고유 트리플 수 찾기

이 글에서는 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 결과를 찾아 저장한 다음 해당 결과와 동일한 값을 배열에서 검색하는 것입니다. 또한 결과 값은 어떤 값 쌍과도 같아서는 안 됩니다.

Example

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

Output

Number of unique triplets : 3

위 코드 설명

  • unordered_set 값을 만들어 주어진 배열에 고유한 숫자를 저장하세요.
  • values.insert(arr[i])를 통해 컬렉션에 값을 삽입하려면 for() 루프를 사용하세요.
  • 두 개의 중첩 루프를 사용하여 모든 숫자 쌍을 반복하고 XOR 값을 계산합니다.
  • 그런 다음 배열에서 XOR 값을 검색하고 값이 배열에는 있지만 쌍에는 없으면 개수를 늘립니다.
  • 결과를 count / 3으로 저장하여 세 조합의 트리플 수를 계산할 수 있으며 필요한 것은 유일한 트리플입니다.

결론

이 기사에서는 XOR 값이 0인 트리플 수를 찾는 방법에 대해 논의했습니다. 우리는 고유한 트리플을 찾는 낙관적 접근 방식에 대해 논의했습니다. 우리는 또한 C++에서 이 문제를 해결하는 프로그램에 대해서도 논의했습니다. 하지만 이 프로그램을 Java, C, Python 등과 같은 다른 프로그래밍 언어로 작성할 수 있습니다. 이 기사가 도움이 되기를 바랍니다.

위 내용은 C++를 사용하여 XOR이 0인 고유 트리플 수 찾기의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
이 기사는 tutorialspoint.com에서 복제됩니다. 침해가 있는 경우 admin@php.cn으로 문의하시기 바랍니다. 삭제