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

C++ प्रोग्राम में DP का उपयोग करते हुए अधिकतम योग वृद्धि क्रम

इस समस्या में, हमें n आकार का एक सरणी arr[] दिया जाता है। हमारा कार्य C++ में DP का उपयोग करते हुए अधिकतम योग वृद्धि को खोजने के लिए एक प्रोग्राम बनाना है।

समस्या का विवरण - अधिकतम योग वृद्धि के बाद का पता लगाने के लिए, हम एक ऐसा क्रम बनाएंगे जिसमें अगला तत्व वर्तमान तत्व से बड़ा होगा।

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

इनपुट

arr[] = {4, 2, 3, 6, 5, 9}

आउटपुट

20

स्पष्टीकरण

Increasing subsequence with maximum sum:
{2, 3, 6, 9} = 2 + 3 + 6 + 9 = 20

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

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

उदाहरण

हमारे समाधान की कार्यप्रणाली को दर्शाने वाला कार्यक्रम,

#include <iostream>
using namespace std;
int retMaxVal(int x, int y){
   if(x > y)
   return x;
   return y;
}
int calcMaxSubSeqSum(int arr[], int n) {
   int maxSum = 0;
   int sumDP[n];
   for (int i = 0; i < n; i++ )
   sumDP[i] = arr[i];
   for (int i = 1; i < n; i++ )
   for (int j = 0; j < i; j++ )
   if ( (sumDP[i] < (sumDP[j] + arr[i])) && ( arr[i] >
   arr[j] ) )
   sumDP[i] = sumDP[j] + arr[i];
   for (int i = 0; i < n; i++ )
   maxSum = retMaxVal(sumDP[i], maxSum);
   return maxSum;
}
int main() {
   int arr[] = {4, 2, 3, 6, 5, 9};
   int n = sizeof(arr)/sizeof(arr[0]);
   cout<<"The maximum Sum Increasing Subsequence using DP is
   "<<calcMaxSubSeqSum(arr, n);
   return 0;
}

आउटपुट

Sum of maximum sum increasing subsequence is 20

  1. सी ++ का उपयोग कर मैट्रिक्स में अधिकतम योग के साथ कॉलम खोजें।

    मान लीजिए कि हमारे पास एम एक्स एन आकार का एक मैट्रिक्स है। हमें कॉलम ढूंढना है, जिसमें अधिकतम योग है। इस कार्यक्रम में हम कुछ मुश्किल दृष्टिकोण का पालन नहीं करेंगे, हम सरणी कॉलम-वार को पार करेंगे, फिर प्रत्येक कॉलम का योग प्राप्त करेंगे, यदि योग अधिकतम है, तो योग और कॉलम इंडेक्स प्रिंट करें। उदाहरण

  1. C++ में डिवाइड और कॉनकर का उपयोग करते हुए अधिकतम योग सबअरे

    मान लीजिए कि हमारे पास सकारात्मक और नकारात्मक मूल्यों वाले डेटा की एक सूची है। हमें सन्निहित उप-सरणी का योग ज्ञात करना है जिसका योग सबसे बड़ा है। मान लीजिए सूची में {-2, -5, 6, -2, -3, 1, 5, -6} है, तो अधिकतम उप-सरणी का योग 7 है। यह {6, -2, -3 का योग है। , 1, 5} हम इस समस्या का समाधान फूट डालो और ज

  1. सी ++ प्रोग्राम बाइनरी सर्च दृष्टिकोण का उपयोग करके अधिकतम सबएरे योग खोजने के लिए

    बाइनरी सर्च (लॉग एन) की रन-टाइम जटिलता के साथ एक तेज़ खोज एल्गोरिदम है। यह सर्च एल्गोरिदम फूट डालो और जीतो के सिद्धांत पर काम करता है। इस एल्गोरिथम के ठीक से काम करने के लिए, डेटा संग्रह क्रमबद्ध रूप में होना चाहिए। बाइनरी सर्च संग्रह के सबसे मध्य आइटम की तुलना करके किसी विशेष आइटम की तलाश करता है।