Heim > Artikel > Backend-Entwicklung > Ermitteln Sie in C++ die Anzahl der Sechser-Tupel, die die Gleichung erfüllen
In diesem Artikel beschreiben wir eine Methode zum Finden von Hexagrammen, die die Gleichung erfüllen. Daher nehmen wir eine Gleichung als Beispiel und müssen die Werte von a, b, c, d, e und f finden, die die folgende Gleichung erfüllen.
( a + b + c ) * e / d = f
Lassen Sie uns die Gleichung neu ordnen −
( a + b + c ) = ( f * d ) / e
Hier ist ein einfaches Beispiel für das gegebene Problem –
Input : arr [ ] = { 1, 3 } Output : 4 Explanation : ( a, b, c, e, f ) = 1, d = 3 ( a, b, c, d, e ) = 1, f = 3 ( a, b, c ) = 1, ( d, e, f ) = 3 ( a, b, c, d, f ) = 3, ( e ) = 1 Input : arr [ ] = { 2, 5 } Output : 3
Wir werden eine naive Methode verwenden, um die Lösung des gegebenen Problems zu finden.
In diesem Problem können wir durch Beobachtung von LHS und RHS alle möglichen LHS-Ergebnisse finden und in einem Array speichern. Ebenso können wir ein RHS-Array erstellen und es mit allen möglichen RHS-Ergebnissen füllen.
Überprüfen Sie, ob die beiden Arrays den gleichen Wert haben, erhöhen Sie die Anzahl für jeden gefundenen Wert und zeigen Sie schließlich das Ergebnis an.
#include<bits/stdc++.h> using namespace std; int findsamenumbers(int *arr1, int *arr2, int n){ int i = 0, j = 0, k = 0, count=0; while(( i < n*n*n+1) && (j < n*n*n+1)){ if(arr1[i] < arr2[j]) i++; else if(arr1[i] == arr2[j]){ count++; int temp = arr1[i]; while(temp==arr1[++i]){ count++; } while(temp==arr2[++j]){ count++; } } else j++; } return count; } int main(){ int arr[] = {2,5}; int n = sizeof(arr)/sizeof(arr[0]); // Generating all possible values of LHS array int index = 0,i; int LHS[n*n*n ]; for ( i = 0; i < n; i++){ for (int j = 0; j < n; j++){ for(int k = 0; k < n; k++){ LHS[index++] = (arr[i] * arr[j]) / arr[k]; } } } // Generating all possible value of RHS array int RHS[n*n*n ]; index=0; for (int i = 0; i < n; i++){ for (int j = 0; j < n; j++){ for (int k = 0; k < n; k++){ RHS[index++] = (arr[i] + arr[j] + arr[k]); } } } sort(RHS, RHS + (n*n*n)); sort(LHS, LHS + (n*n*n)); int result = findsamenumbers(LHS, RHS, n); cout<<"Number of sextuplets that satisfy an equation: "<<result; return 0; }
Number of sextuplets that satisfy an equation: 3
In diesem Programm haben wir zwei Arrays erstellt, um jedes Ergebnis von LHS und RHS zu speichern. Wir verwenden drei verschachtelte Schleifen, um jeden möglichen Wert von (a, b, c) in die linke Seite und jeden möglichen Wert von (d, e, f) in die rechte Seite einzugeben. Danach sortieren wir diese beiden Arrays, um sie zu vergleichen und in beiden Arrays die gleichen Werte zu finden, indem wir beide Arrays an die Funktion findsamenumber() übergeben.
In der Funktion findsamenumber() verwenden wir zwei verschachtelte Schleifen, um nach demselben Wert zu suchen. Wenn wir zwei identische Elemente finden, überprüfen wir die Häufigkeit dieser Zahl in beiden Arrays, um die Häufigkeit für jeden möglichen Wert zu zählen.
if(arr1[i] == arr2[j]){ count++; int temp = arr1[i]; while(temp==arr1[++i]){ count++; } while(temp==arr2[++j]){ count++; }
In diesem Artikel haben wir die Anzahl der Sextette ermittelt, die die Gleichung im angegebenen Array erfüllen. Wir finden jeden möglichen Wert der Variablen in der 6-Variablen-Gleichung (a + b + c) * e / d = f. Wir können dieses Problem in jeder anderen Programmiersprache wie C, Java und Python lösen.
Das obige ist der detaillierte Inhalt vonErmitteln Sie in C++ die Anzahl der Sechser-Tupel, die die Gleichung erfüllen. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!