Ở đâ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 con mà trung bình hình học là lớn nhất. Giả sử A = [1, 5, 7, 2, 0], thì tập con có trung bình hình học lớn nhất sẽ là [5, 7].
Để giải quyết bài toán này, chúng ta sẽ làm theo một thủ thuật, chúng ta sẽ không tìm trung bình, vì chúng ta biết rằng hai phần tử lớn nhất sẽ tạo ra 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ề làm 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); }
Kết quả
5, 7