Computer >> कंप्यूटर >  >> प्रोग्रामिंग >> C++

अधिकतम उत्पाद सबअरे - C++ में दो ट्रैवर्सल का उपयोग करना

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

  1. सी ++ में एक पेड़ में दो गैर-अंतर्विभाजक पथों का अधिकतम उत्पाद

    इस समस्या में, हमें n नोड्स के साथ एक अप्रत्यक्ष कनेक्टेड ट्री T दिया जाता है। हमारा कार्य C++ में एक ट्री में दो गैर-अंतर्विभाजकपथों के अधिकतम उत्पाद को खोजने के लिए एक प्रोग्राम बनाना है। समस्या का विवरण - एक पेड़ में दो अप्रतिच्छेदी पथों का अधिकतम गुणनफल ज्ञात करना। हम सभी गैर-दिलचस्प पथ खोजेंगे

  1. सी ++ में उत्पाद के बराबर एलसीएम के साथ अधिकतम लंबाई उपसरणी

    मान लीजिए कि हमारे पास एक सरणी A है। हमें उप-सरणी की अधिकतम लंबाई ज्ञात करनी है, जिसका LCM उस उप-सरणी के तत्वों के गुणनफल के समान है। यदि उस प्रकार का उप-सरणी नहीं मिलता है, तो -1 लौटाएं। मान लीजिए सरणी {6, 10, 21} है, तो लंबाई 2 है, क्योंकि उप-सरणी {10, 21} है, जिसका एलसीएम 210 है, और उत्पाद भी 210

  1. एसटीएल का उपयोग कर सी ++ में ऐरे उत्पाद

    यह ऐरे उत्पाद का पता लगाने के लिए C++ प्रोग्राम का एक उदाहरण है। एल्गोरिदम Begin Initialize the values of array. Call used defined function accumulate to return the product of array. Print the solution. End. उदाहरण कोड #include <iostream> #include <numeric> using namespace std;