इस समस्या में, हमें पूर्णांकों की एक सरणी गिरफ्तारी [] दी जाती है। हमारा काम अधिकतम उत्पाद सबरे को खोजने के लिए एक प्रोग्राम बनाना है - C++ में दो ट्रैवर्सल का उपयोग करना।
समस्या का विवरण - यहां सरणी में, हम दो ट्रैवर्सल का उपयोग करके अधिकतम उत्पाद उप-सरणी पाएंगे, एक इंडेक्स 0 और दूसरा इंडेक्स (एन -1)।
समस्या को समझने के लिए एक उदाहरण लेते हैं,
इनपुट
arr[] = {4, -2, 5, -6, 0, 8} आउटपुट
240
उदाहरण
Subarray = {4, -2, 5, -6}
Maximum product = 4 * (-2) * 5 * (-6) = 240 समाधान दृष्टिकोण
दो ट्रैवर्सल का उपयोग करके इस समस्या को हल करने के लिए। यहां, हम बाएं से दाएं यानी इंडेक्स 0 से n-1 तक ट्रैवर्सल के लिए दो स्थानीय अधिकतम मानों का उपयोग करते हुए अधिकतम उत्पाद पाएंगे। और एक ट्रैवर्सल के लिए दाएं से बाएं यानी इंडेक्सएन -1 से 0 तक। बाकी एल्गोरिदम अधिकतम उत्पादों को खोजने के समान है।
हमारे समाधान की कार्यप्रणाली को दर्शाने वाला कार्यक्रम,
उदाहरण
#include<iostream>
using namespace std;
int CalcMaxProductSubArray(int arr[], int n) {
int frntMax = 1, rearMax = 1, maxVal = 1;
for (int i=0; i<n; i++) {
frntMax = frntMax*arr[i];
if (frntMax == 0)
frntMax = 1;
}
for (int i=n-1; i>=0; i--) {
rearMax = rearMax * arr[i];
if (rearMax == 0)
rearMax = 1;
}
maxVal = max(frntMax, rearMax);
return maxVal;
}
int main() {
int arr[] = {4, -2, 5, -6, 0, 8};
int n = sizeof(arr)/sizeof(arr[0]);
cout<<"Maximum product subarray is "<<CalcMaxProductSubArray(arr, n);
return 0;
} आउटपुट
Maximum product subarray is 240