查找C ++中最大乘积四倍的数量

假设我们有一个包含n个元素的整数数组。我们必须找到数组中四倍的最大乘积。因此,如果数组是[3、5、20、6、10],则最终乘积为6000,四元组中的元素为10、5、6、20

为了解决这个问题,我们将遵循以下步骤-

  • 以升序对数组排序

  • 假设x是最后四个元素的乘积,y是前四个元素的乘积,z是前两个元素和后两个元素的乘积

  • 返回x,y和z的最大值。

示例

#include<iostream>
#include<algorithm>
using namespace std;
int maxQuadProduct(int arr[], int n) {
   if (n < 4)
   return -1;
   sort(arr, arr + n);
   int last_four = arr[n - 1] * arr[n - 2] * arr[n - 3] * arr[n - 4];
   int first_four = arr[0] * arr[1] * arr[2] * arr[3];
   int two_first_last = arr[0] * arr[1] * arr[n - 1] * arr[n - 2];
   return max(last_four, max(first_four, two_first_last));
}
int main() {
   int arr[] = { -10, -3, 5, 6, -20 };
   int n = sizeof(arr) / sizeof(arr[0]);
   int maximum_val = maxQuadProduct(arr, n);
   if (maximum_val == -1)
      cout << "No Quadruple Exists";
   else
      cout << "Maximum product is " << maximum_val;
}

输出结果

Maximum product is 6000