Heim > Backend-Entwicklung > C++ > Hauptteil

Ermitteln Sie mithilfe der C++-Programmierung die Anzahl möglicher Hypotenusen- und Flächenpaare eines rechtwinkligen Dreiecks

WBOY
Freigeben: 2023-09-08 14:05:07
nach vorne
1007 Leute haben es durchsucht

Ermitteln Sie mithilfe der C++-Programmierung die Anzahl möglicher Hypotenusen- und Flächenpaare eines rechtwinkligen Dreiecks

In diesem Artikel erklären wir, wie man in C++ die Anzahl möglicher Paare ermittelt, die die Hypotenuse und die Fläche eines rechtwinkligen Dreiecks bilden.

Wir müssen die Anzahl aller möglichen Paare aus Hypotenuse und Fläche (H, A) bestimmen, die ein rechtwinkliges Dreieck bilden, wobei H die Hypotenuse und A die Fläche ist.

In diesem Beispiel -

                                                                                       durch ’ s zu

‘s Verwendung zu

-- / 2

oder

4 * A

2

= ( x * y )

2

… … (1 )Wir wissen auch x

2

+ y

2

=H2 … (2)Löse (1) & (2)4 * A

2

= H

2

- x2 )Lösen Sie die quadratische Gleichung in x2 und lassen Sie D (Diskriminante) >= 0 (x existiert) Wir erhalten, H2 >= 4 * A (Bedingung für rechtwinkliges Dreieck zu existieren)

Hier ist das Beispiel-

Input : array H[ ] = { 3, 6, 8 } : A[ ] = { 2, 31, 12 }
Output : 4
Explanation : possible pairs of Hypotenuse and Area ( H, A ) are ( 3, 2 ), ( 6, 2 ), ( 8, 2 ) and ( 8, 12 ).

Input : array H[ ] = { 2, 5, 9 } : A[ ] = { 3, 11, 7 }
Output : 4
Explanation : possible pairs of Hypotenuse and Area ( H, A ) are possible pairs of Hypotenuse and Area ( H, A ) are ( 5, 3 ), ( 9, 3 ), ( 9, 11 ) and ( 9, 7 ).
Nach dem Login kopieren

LösungsmethodeJetzt werden wir zwei verschiedene Methoden verwenden, um die gegebene Aufgabe auszuführen –

Brute-Force-Methode

In dieser einfachen Methode finden wir alle möglichen Kombinationen von Hypotenuse und Bereich (H,A), prüfen Sie, ob sie die Bedingung

h2 >= 4 * A

erfüllen, und zählen Sie die Anzahl jedes Kombinationspaars, das diese Bedingung erfüllt.

Beispiel

#include <iostream>
using namespace std;
int main(){
    int H[ ] = { 2,5,9}; // array of hypotenuse
    int s1 = sizeof(H)/sizeof(H[0]);
    int A[ ] = { 3, 11, 7};// array of area
    int s2 = sizeof(A)/sizeof(A[0]);
    int count = 0;// initialising count to 0
    // finding all possible pairs
    for (int i = 0; i < s1; i++) {
        for (int j = 0; j < s2; j++) {
            // checking whether current pair satisfies the condition
            if (H[i] * H[i] >= 4 * A[j]){
                count++;

            }
        }
    }
    cout << "Number of possible pairs of ( H, A ): " << count ;
    return 0;
}
Nach dem Login kopieren

Ausgabe

Number of possible pairs of ( H, A ): 4
Nach dem Login kopieren
Nach dem Login kopieren
Erklärung

In diesem Code verwenden wir eine Zählvariable, um die Anzahl der Paare zu speichern, die die Gleichung erfüllen, und verwenden eine verschachtelte Schleife, um das (H, A)-Paar zu generieren. Die zeitliche Komplexität dieses Codes beträgt O(n2), was kein effizienter Ansatz ist. Lassen Sie uns die zweite Methode verstehen.

Effiziente Methode

Bei dieser Methode sortieren wir zunächst beide Arrays in aufsteigender Reihenfolge und ermitteln dann die maximale Fläche, indem wir eine beliebige Hypotenusenlänge finden und prüfen, ob

H

2

> 4 * A

ist.

Beispiel

#include <bits/stdc++.h>
using namespace std;
int main (){
    int H[] = { 2, 5, 9 };
    int s1 = sizeof (H) / sizeof (H[0]);
    int A[] = {  3, 11, 7 };
    int s2 = sizeof (A) / sizeof (A[0]);
    int count = 0;
    // Sorting both the arrays
    sort (H, H + s1);
    sort (A, A + s2);
    int temp = -1;
    for (int i = 0; i < s1; i++){
        // Applying binary search for
        // every Hypotenuse Length
        int flag1 = 0;
        int flag2 = s2 - 1;
        while (flag1 <= flag2){
            int mid = flag1 + (flag2 - flag1) / 2;
            if ((H[i] * H[i]) >= (4 * A[mid])){
                temp = mid;
                flag1 = mid + 1;
            }
            else{
                flag2 = mid - 1;
            }
        }
        if (temp != -1){// Check if we get any possible area
            count += temp + 1;
        }
    }
    cout << "Number of possible pairs of (H, A): " << count;
    return 0;
}
Nach dem Login kopieren
Ausgabe
Number of possible pairs of ( H, A ): 4
Nach dem Login kopieren
Nach dem Login kopieren
Erklärung des obigen Codes

In diesem Code sortieren wir zunächst die beiden Arrays in aufsteigender Reihenfolge und prüfen dann jede mögliche Länge mithilfe der binären Suche, um den maximalen Bereich zu finden.

Angenommen, die maximale Fläche liegt bei Index 3 im Array der Region A[ ], dann erfüllen alle Regionen, die kleiner als Index 3 sind, ebenfalls diese Gleichung, sodass wir 3 mögliche Paare bilden können.

>

Fazit

In diesem Artikel haben wir das Problem gelöst, die Anzahl der Hypotenusen- und Flächenpaare zu ermitteln, die zur Bildung eines rechtwinkligen Dreiecks verwendet werden. Wir haben einen Brute-Force-Ansatz mit einer Zeitkomplexität von O(n

2

) und einen effizienten Ansatz mit einer Zeitkomplexität von O(s1 log(s2)) angewendet. Ich hoffe, dieser Artikel ist hilfreich für Sie.

Das obige ist der detaillierte Inhalt vonErmitteln Sie mithilfe der C++-Programmierung die Anzahl möglicher Hypotenusen- und Flächenpaare eines rechtwinkligen Dreiecks. 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
Über uns Haftungsausschluss Sitemap
Chinesische PHP-Website:Online-PHP-Schulung für das Gemeinwohl,Helfen Sie PHP-Lernenden, sich schnell weiterzuentwickeln!