在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

以上是 在C ++中找到具有最大几何均值的子集 的全部内容, 来源链接: utcz.com/z/353478.html

回到顶部