
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: −
1 2 3 4 5 6 7 | 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
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 | # 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;
int count = 0;
unordered_set < int >values;
for (int i = 0; i < n; i++)
values.insert (arr[i]);
for (int i = 0; i < n - 1; i++) {
for (int j = i + 1; j < n; j++) {
int XR = arr[i] ^ arr[j];
if (values.find (XR) != values. end () && XR != arr[i] &&
XR != arr[j])
count ++;
}
}
result = count / 3;
cout << "Number of unique triplets : " << result;
return 0;
}
|
Nach dem Login kopieren
Ausgabe
1 | 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!