在 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

更新时间:2019 年 10 月 24 日

116 次浏览

开启你的 职业 生涯

通过完成课程获得认证

开始
广告