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

更新日期:17-Dec-2019

164 次瀏覽

啟動你的 職業

完成本課程獲得認證

開始學習
廣告
© . All rights reserved.