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

C++ प्रोग्राम में अधिकतम उपअनुक्रम योग जैसे कि कोई तीन लगातार न हों


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

समस्या विवरण

यहां, हमें सरणी से बने अनुक्रमों का योग ढूंढना है जैसे कि कोई तीन लगातार तत्व न हों।

सरणी के लगातार तत्व वे तत्व हैं जो सूचकांक के समान क्रम का पालन करते हैं।

arr[0], arr[1], arr[2], …

उदाहरण

इनपुट

arr[] = {5, 9, 12, 15}

आउटपुट

32

व्याख्या

योग = 5 + 12 + 15 = 32

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

समस्या का एक सरल समाधान वर्तमान सूचकांक तक के योग को संग्रहीत करने के लिए एक सहायक सरणी बनाना है। और फिर योग ढूंढना और लगातार योगों की जांच करके सूचकांक तक के योग की जांच करना।

पहले दो योग मानों के लिए, sumVal[0] = arr[0] 
sumVal[1] = arr[0] + arr[1]

फिर तीसरे मान पर विचार नहीं किया जा सकता। और योग पर विचार करने के लिए, हम वर्तमान तीन के साथ शर्तों की जांच करेंगे, यदि arr[i] पर विचार करने से योग मान बढ़ता है, तो arr[i-1] या arr[i-2] को बाहर करें। अन्यथा arr[i] पर विचार न करें, योग वही रहता है।

sum[i] = max(sum[i-3] + arr[i-1] + arr[i], sum[i-2] + arr[i], sum[i-1])

उदाहरण

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

#include <iostream> 
using namespace std; 

int findMaxSubSeqSum(int arr[], int n) { 
    int maxSumArr[n]; 
    maxSumArr[0] = arr[0]; 
    maxSumArr[1] = arr[0] + arr[1]; 
    maxSumArr[2] = max(maxSumArr[1], max(arr[1] + arr[2], arr[0] + arr[2])); 
    
    for (int i = 3; i < n; i++){ 
        int sum1 = maxSumArr[i - 2] + arr[i]; 
        int sum2 = arr[i] + arr[i - 1] + maxSumArr[i - 3]; 
        maxSumArr[i] = max(max(maxSumArr[i - 1], sum1), sum2); 
    } 
    return maxSumArr[n - 1]; 
} 

int main() { 
    int arr[] = { 5, 9, 12, 15 }; 
    int n = sizeof(arr) / sizeof(arr[0]); 
    cout<<"The maximum subsequence sum such that no three are consecutive is "<<findMaxSubSeqSum(arr, n); 
    return 0; 
}

आउटपुट

The maximum subsequence sum such that no three are consecutive is 32
  1. C++ प्रोग्राम में डायनामिक प्रोग्रामिंग का उपयोग करके बाइनरी ट्री में आसन्न न होने वाले नोड्स का अधिकतम योग C++ प्रोग्राम में डायनामिक प्रोग्रामिंग का उपयोग करके बाइनरी ट्री में आसन्न न होने वाले नोड्स का अधिकतम योग

    इस समस्या में, हमें एक बाइनरी ट्री दिया गया है जिसमें प्रत्येक नोड का एक मान है। हमारा कार्य एक प्रोग्राम बनाना है जो डायनामिक प्रोग्रामिंग का उपयोग करके बाइनरी ट्री में ऐसे नोड्स का अधिकतम योग ढूंढे जो आसन्न न हों। समस्या विवरण हम बाइनरी ट्री के उपसमुच्चय (subsets) को चुनेंगे ताकि योग अधिकतम हो औ

  1. C++ प्रोग्राम में बाइनरी ट्री में अधिकतम उप-ट्री योग जैसे कि उप-ट्री BST भी हो C++ प्रोग्राम में बाइनरी ट्री में अधिकतम उप-ट्री योग जैसे कि उप-ट्री BST भी हो

    इस समस्या में, हमें एक बाइनरी ट्री BT दिया गया है। हमारा कार्य एक प्रोग्राम बनाना है जो बाइनरी ट्री में अधिकतम उप-ट्री योग ढूंढे जैसे कि उप-ट्री भी एक BST हो। बाइनरी ट्री में एक विशेष शर्त होती है कि प्रत्येक नोड के अधिकतम दो बच्चे हो सकते हैं। बाइनरी सर्च ट्री एक ट्री है जिसमें सभी नोड्स नीचे उ

  1. सर्कुलर ऐरे में अधिकतम योग जहाँ कोई दो आसन्न तत्व न हों - C++ सर्कुलर ऐरे में अधिकतम योग जहाँ कोई दो आसन्न तत्व न हों - C++

    इस समस्या में, हमें एक सर्कुलर ऐरे cirArr[] दिया गया है। हमारा कार्य एक प्रोग्राम बनाना है जो C++ में सर्कुलर ऐरे में अधिकतम योग ढूंढे जहाँ कोई दो आसन्न तत्व न हों।समस्या विवरणसर्कुलर ऐरे के लिए, हमें ऐरे के तत्वों का अधिकतम योग ढूंढना है जहाँ आसन्न तत्वों को नहीं लिया जा सकता, यानी हमें वैकल्पिक तत