Heim > Backend-Entwicklung > C++ > Ermitteln Sie in C++ die Anzahl der Sechser-Tupel, die die Gleichung erfüllen

Ermitteln Sie in C++ die Anzahl der Sechser-Tupel, die die Gleichung erfüllen

王林
Freigeben: 2023-09-11 17:17:11
nach vorne
629 Leute haben es durchsucht

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

Lassen Sie uns die Gleichung neu ordnen −

( a + b + c ) = ( f * d ) / e
Nach dem Login kopieren

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

Methode zum Finden der Lösung

Wir werden eine naive Methode verwenden, um die Lösung des gegebenen Problems zu finden.

Naiver Ansatz

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.

Beispiel

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

Ausgabe

Number of sextuplets that satisfy an equation: 3
Nach dem Login kopieren

Erklärung des obigen Programms

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

Fazit

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!

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