이 튜토리얼에서는 증가하는 부분 수열의 최대 곱을 찾는 프로그램에 대해 논의할 것입니다.
이를 위해 정수 배열이 제공됩니다. 우리의 임무는 요소 수에 관계없이 배열의 하위 시퀀스의 최대 곱을 찾는 것입니다.
예시
#include <bits/stdc++.h>
#define ll long long int
using namespace std;
//returning maximum product
ll lis(ll arr[], ll n) {
ll mpis[n];
//initiating values
for (int i = 0; i < n; i++)
mpis[i] = arr[i];
for (int i = 1; i < n; i++)
for (int j = 0; j < i; j++)
if (arr[i] > arr[j] && mpis[i] < (mpis[j] * arr[i]))
mpis[i] = mpis[j] * arr[i];
return *max_element(mpis, mpis + n);
}
int main() {
ll arr[] = { 3, 100, 4, 5, 150, 6 };
ll n = sizeof(arr) / sizeof(arr[0]);
printf("%lld", lis(arr, n));
return 0;
} 출력
45000