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
广告