इस समस्या में, हमें पूर्णांकों की एक सरणी गिरफ्तारी [] दी जाती है। हमारा काम अधिकतम उत्पाद सबरे को खोजने के लिए एक प्रोग्राम बनाना है - 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