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 ).
LösungsmethodeJetzt werden wir zwei verschiedene Methoden verwenden, um die gegebene Aufgabe auszuführen –
Brute-Force-Methode
erfüllen, und zählen Sie die Anzahl jedes Kombinationspaars, das diese Bedingung erfüllt.
#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; }
Ausgabe Number of possible pairs of ( H, A ): 4
2
> 4 * ABeispiel 2 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!#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;
}
Number of possible pairs of ( H, A ): 4
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.
>
FazitIn 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