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

Tích tối đa của một dãy con ngày càng tăng có kích thước 3 trong C ++

Trong hướng dẫn này, chúng ta sẽ thảo luận về một chương trình để tìm ra sản phẩm tối đa của một nhóm nhỏ ngày càng tăng có kích thước 3.

Đối với điều này, chúng tôi sẽ được cung cấp với một mảng các số nguyên dương. Nhiệm vụ của chúng tôi là tìm ra một dãy con gồm ba phần tử với sản phẩm tối đa.

Ví dụ

#include<bits/stdc++.h>
using namespace std;
//returning maximum product of subsequence
long long int maxProduct(int arr[] , int n) {
   int smaller[n];
   smaller[0] = -1 ;
   set<int>S ;
   for (int i = 0; i < n ; i++) {
      auto j = S.insert(arr[i]);
      auto itc = j.first;
      --itc;
      if (itc != S.end())
         smaller[i] = *itc;
      else
         smaller[i] = -1;
   }
   long long int result = INT_MIN;
   int max_right = arr[n-1];
   for (int i=n-2 ; i >= 1; i--) {
      if (arr[i] > max_right)
         max_right = arr[i];
      else if (smaller[i] != -1)
         result = max(smaller[i] * arr[i] * max_right, result);
   }
   return result;
}
int main() {
   int arr[] = {10, 11, 9, 5, 6, 1, 20};
   int n = sizeof(arr)/sizeof(arr[0]);
   cout << maxProduct(arr, n) << endl;
   return 0;
}

Đầu ra

2200