इस ट्यूटोरियल में, हम ऐरे के अधिकतम उत्पाद सबसेट को खोजने के लिए एक प्रोग्राम पर चर्चा करेंगे।
इसके लिए हमें सकारात्मक और नकारात्मक मानों वाली एक सरणी प्रदान की जाएगी। हमारा काम सरणी के सबसेट के लिए अधिकतम उत्पाद खोजना है।
उदाहरण
#include <bits/stdc++.h>
using namespace std;
int maxProductSubset(int a[], int n) {
if (n == 1)
return a[0];
int max_neg = INT_MIN;
int count_neg = 0, count_zero = 0;
int prod = 1;
for (int i = 0; i < n; i++) {
//multiplying 0 is not useful
if (a[i] == 0) {
count_zero++;
continue;
}
if (a[i] < 0) {
count_neg++;
max_neg = max(max_neg, a[i]);
}
prod = prod * a[i];
}
if (count_zero == n)
return 0;
if (count_neg & 1) {
if (count_neg == 1 &&
count_zero > 0 &&
count_zero + count_neg == n)
return 0;
prod = prod / max_neg;
}
return prod;
}
int main() {
int a[] = { -1, -1, -2, 4, 3 };
int n = sizeof(a) / sizeof(a[0]);
cout << maxProductSubset(a, n);
return 0;
} आउटपुट
24