在 C++ 中找到幾何平均值最大的子集
這裡有一個數組 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
廣告
資料結構
網路
RDBMS
作業系統
Java
iOS
HTML
CSS
Android
Python
C 程式設計
C++
C#
MongoDB
MySQL
Javascript
PHP