यहां हमारे पास कुछ तत्वों के साथ एक सरणी A है। हमारा कार्य वह सबसेट ढूंढना है जहां ज्यामितीय माध्य अधिकतम हो। मान लीजिए A = [1, 5, 7, 2, 0], तो सबसे बड़े ज्यामितीय माध्य वाला सबसेट [5, 7] होगा।
इसे हल करने के लिए, हम एक ट्रिक का पालन करेंगे, हम माध्य नहीं ढूंढेंगे, क्योंकि हम जानते हैं कि सबसे बड़े दो तत्व सबसे बड़ा ज्यामितीय माध्य बनाएंगे, इसलिए सबसे बड़े दो तत्वों को सबसेट के रूप में लौटाया जाएगा।
उदाहरण
#include <iostream>
using namespace std;
void largestGeoMeanSubset(int arr[], int n) {
if (n < 2) {
cout << "Very few number of elements";
return;
}
int max = INT_MIN, second_max = INT_MIN;
for (int i = 0; i < n ; i ++) {
if (arr[i] > max) {
second_max = max;
max = arr[i];
}else if (arr[i] > second_max)
second_max = arr[i];
}
cout << second_max << ", "<< max;
}
int main() {
int arr[] = {1, 5, 7, 2, 0};
int n = sizeof(arr)/sizeof(arr[0]);
largestGeoMeanSubset(arr, n);
}
आउटपुट
5, 7