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

C++ प्रोग्राम में बढ़ते क्रम का अधिकतम उत्पाद


इस समस्या में, हमें n आकार का एक सरणी arr[] दिया जाता है। हमारा कार्य बढ़ते क्रम के अधिकतम उत्पाद को खोजना है।

समस्या का विवरण - हमें सरणी के तत्वों से किसी भी संभव आकार के बढ़ते क्रम के अधिकतम उत्पाद को खोजने की जरूरत है।

समस्या को समझने के लिए एक उदाहरण लेते हैं,

इनपुट

arr[] = {5, 4, 6, 8, 7, 9}

आउटपुट

2160

स्पष्टीकरण

All Increasing subsequence:
{5,6,8,9}. Prod = 2160
{5,6,7,9}. Prod = 1890
Here, we have considered only max size subsequence.

समाधान दृष्टिकोण

समस्या का एक सरल समाधान एक गतिशील प्रोग्रामिंग दृष्टिकोण का उपयोग करना है। इसके लिए, हम सरणी के दिए गए तत्व तक अधिकतम उत्पाद बढ़ते क्रम को संग्रहीत करेंगे और फिर एक सरणी में संग्रहीत करेंगे।

एल्गोरिदम

आरंभ करें -

prod[] with elements of arr[].
maxProd = −1000

चरण 1 -

Loop for i −> 0 to n−1

चरण 1.1 -

Loop for i −> 0 to i

चरण 1.1.1

Check if the current element creates an increasing
subsequence i.e. arr[i]>arr[j] and arr[i]*prod[j]> prod[i] −>
prod[i] = prod[j]*arr[i]

चरण 2 -

find the maximum element of the array. Following steps 3 and 4.

चरण 3 -

Loop form i −> 0 to n−1

चरण 4 -

if(prod[i] > maxProd) −> maxPord = prod[i]

चरण 5 -

return maxProd.

उदाहरण

हमारे समाधान के कार्यान्वयन को दिखाने के लिए कार्यक्रम,

#include <iostream>
using namespace std;
long calcMaxProdSubSeq(long arr[], int n) {
   long maxProdSubSeq[n];
   for (int i = 0; i < n; i++)
   maxProdSubSeq[i] = arr[i];
   for (int i = 1; i < n; i++)
   for (int j = 0; j < i; j++)
   if (arr[i] > arr[j] && maxProdSubSeq[i] <
      (maxProdSubSeq[j] * arr[i]))
   maxProdSubSeq[i] = maxProdSubSeq[j] * arr[i];
   long maxProd = −1000 ;
   for(int i = 0; i < n; i++){
      if(maxProd < maxProdSubSeq[i])
         maxProd = maxProdSubSeq[i];
   }
   return maxProd;
}
int main() {
   long arr[] = {5, 4, 6, 8, 7, 9};
   int n = sizeof(arr) / sizeof(arr[0]);
   cout<<"The maximum product of an increasing subsequence is "<<calcMaxProdSubSeq(arr, n);
   return 0;
}

आउटपुट

The maximum product of an increasing subsequence is 2160
. है
  1. C++ में सबसे लंबे समय तक लगातार बढ़ते क्रम

    मान लीजिए कि हमारे पास पूर्णांकों की एक सरणी है; हमें सबसे लंबे समय तक लगातार बढ़ते हुए उप-सरणी की लंबाई का पता लगाना है। इसलिए, यदि इनपुट [2,4,6,5,8] जैसा है, तो आउटपुट 3 होगा। चूंकि सबसे लंबे समय तक लगातार बढ़ने वाला क्रम [2,4,6] है, और इसकी लंबाई 3 है। इसे हल करने के लिए, हम इन चरणों का पालन कर

  1. C++ . में आकार k के अनुगमन का अधिकतम उत्पाद

    इस समस्या में, हमें पूर्णांकों की एक सरणी गिरफ्तारी [] और एक संख्या k दी जाती है। हमारा कार्य C++ में आकार k के बाद के अधिकतम उत्पाद को खोजने के लिए एक प्रोग्राम बनाना है। समस्या का विवरण - यहां, हमें आकार k, 1<=k <=n के बाद के क्रम को खोजने की जरूरत है, जिसमें इसके तत्वों का अधिकतम गुणनफल है। समस

  1. सी++ में तीन नंबरों का अधिकतम उत्पाद

    मान लीजिए कि हमारे पास एक पूर्णांक सरणी है; हमें तीन नंबर खोजने होंगे जिनका उत्पाद अधिकतम है और फिर अधिकतम उत्पाद लौटाएं। इसलिए, अगर इनपुट [1,1,2,3,3] जैसा है, तो आउटपुट 18 होगा, क्योंकि तीन तत्व [2,3,3] हैं। इसे हल करने के लिए, हम इन चरणों का पालन करेंगे - सरणी संख्याओं को क्रमबद्ध करें l :