Heim > Backend-Entwicklung > C++ > Ermitteln Sie mithilfe von C++ die Anzahl eindeutiger Tripel mit XOR von Null

Ermitteln Sie mithilfe von C++ die Anzahl eindeutiger Tripel mit XOR von Null

王林
Freigeben: 2023-09-08 18:09:05
nach vorne
1114 Leute haben es durchsucht

Ermitteln Sie mithilfe von C++ die Anzahl eindeutiger Tripel mit XOR von Null

In diesem Artikel werden wir über das Zählen der Anzahl eindeutiger Tripel (x,y,z) in einem bestimmten Array eindeutiger Zahlen sprechen, deren XOR 0 ist. Ein Tripel sollte also eindeutig sein, wenn alle drei Elemente eindeutig sind und die Kombination aller Tripel wie folgt berechnet wird: −

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.
Nach dem Login kopieren

Möglichkeiten, die Lösung zu finden

Wir kennen die XOR-Operation für dieselben Werte. Das Ergebnis ist immer Null. Ein optimistischer Ansatz zum Auffinden eindeutiger Tripel besteht also darin, das XOR-Ergebnis zweier Werte in einem Array zu finden, das Ergebnis zu speichern und dann das Array nach einem Wert zu durchsuchen, der diesem Ergebnis entspricht. Darüber hinaus sollte der Wert des Ergebnisses keinem Wertepaar entsprechen. Bitte beachten Sie

Beispiel

#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;
}
Nach dem Login kopieren

Ausgabe

Number of unique triplets : 3
Nach dem Login kopieren

Erklärung des obigen Codes

  • Erstellen Sie einen unordered_set Werte, um die eindeutigen Zahlen im angegebenen Array zu speichern.
  • Verwenden Sie eine for()-Schleife, um Werte über Values.insert(arr[i]) in die Sammlung einzufügen.
  • Verwenden Sie zwei verschachtelte Schleifen, um alle Zahlenpaare zu durchlaufen und ihre XOR-Werte zu berechnen.
  • Durchsuchen Sie dann das Array nach dem XOR-Wert und erhöhen Sie die Anzahl, wenn sich der Wert im Array, aber nicht im Paar befindet.
  • Speichern Sie das Ergebnis als count / 3, damit die Anzahl der Tripel aus drei Kombinationen berechnet werden kann und wir nur den Tripel benötigen.

Fazit

In diesem Artikel wurde erläutert, wie man die Anzahl der Tripel mit dem XOR-Wert 0 ermittelt. Wir haben einen optimistischen Ansatz zur Ermittlung eindeutiger Tripel besprochen. Wir haben auch ein Programm zur Lösung dieses Problems in C++ besprochen. Wir können dieses Programm jedoch auch in anderen Programmiersprachen wie Java, C, Python usw. schreiben. Ich hoffe, dieser Artikel ist hilfreich für Sie.

Das obige ist der detaillierte Inhalt vonErmitteln Sie mithilfe von C++ die Anzahl eindeutiger Tripel mit XOR von Null. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Verwandte Etiketten:
Quelle:tutorialspoint.com
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage