Computer >> Máy Tính >  >> Lập trình >> C ++

Tìm một tập hợp con có giá trị trung bình hình học lớn nhất trong C ++

Ở đây chúng ta có một mảng A với một số phần tử. Nhiệm vụ của chúng ta là tìm tập hợp con có giá trị trung bình hình học là cực đại. Giả sử A =[1, 5, 7, 2, 0], thì tập con có giá trị trung bình hình học lớn nhất sẽ là [5, 7].

Để giải quyết vấn đề này, chúng ta sẽ làm theo một mẹo nhỏ, chúng ta sẽ không tìm giá trị trung bình, vì chúng ta biết rằng hai phần tử lớn nhất sẽ tạo thành giá trị trung bình hình học lớn nhất, vì vậy hai phần tử lớn nhất sẽ được trả về dưới dạng tập con.

Ví dụ

#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);
}

Đầu ra

5, 7