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

Tìm Số Bộ Tư Sản Phẩm Tối Đa trong C ++

Giả sử chúng ta có một mảng số nguyên với n phần tử. Chúng ta phải tìm tích tối đa của một phần tư trong mảng. Vì vậy, nếu mảng giống như [3, 5, 20, 6, 10], thì tích cuối cùng là 6000 và các phần tử trong bộ bốn là 10, 5, 6, 20

Để giải quyết vấn đề này, chúng tôi sẽ làm theo các bước sau -

  • Sắp xếp mảng theo thứ tự tăng dần
  • Giả sử x là tích của bốn phần tử cuối cùng, y là tích của bốn phần tử đầu tiên và z là tích của hai phần tử đầu tiên và hai phần tử thứ hai
  • Trả về giá trị tối đa của x, y và z.

Ví dụ

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

Đầu ra

Maximum product is 6000