Computer >> 컴퓨터 >  >> 프로그램 작성 >> C++

C++에서 최대 곱 4배의 수 찾기

<시간/>

n개의 요소가 있는 하나의 정수 배열이 있다고 가정합니다. 배열에서 4배의 최대 곱을 찾아야 합니다. 따라서 배열이 [3, 5, 20, 6, 10]과 같으면 최종 제품은 6000이고 4배의 요소는 10, 5, 6, 20입니다.

이 문제를 해결하기 위해 다음 단계를 따릅니다. −

  • 배열을 오름차순으로 정렬
  • x가 마지막 4개 요소의 곱, y가 처음 4개 요소의 곱, z가 처음 2개와 두 번째 2개 요소의 곱이라고 가정합니다.
  • 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