Computer >> 컴퓨터 >  >> 프로그램 작성 >> C++

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