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

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


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

समस्या का विवरण - यहां, हमें सरणी से बनाए गए अनुक्रमों का योग इस तरह निकालने की आवश्यकता है कि कोई लगातार तीन तत्व न हों।

के लगातार तत्व एक सरणी वे तत्व हैं जिन्होंने अनुक्रमणिका के समान क्रम का पालन किया है।

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

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

इनपुट

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

आउटपुट

32

स्पष्टीकरण

Sum = 5 + 12 + 15 = 32

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

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

For the first two sum values,
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++ प्रोग्राम में डायनामिक प्रोग्रामिंग का उपयोग करते हुए कोई भी दो आसन्न नहीं हैं

    इस समस्या में, हमें एक बाइनरी ट्री दिया जाता है जिसमें प्रत्येक नोड का एक मान होता है। हमारा काम बाइनरीट्री में नोड्स की अधिकतम राशि को खोजने के लिए एक प्रोग्राम बनाना है जैसे कि कोई भी दो आसन्न न हो। डायनामिक प्रोग्रामिंग का उपयोग करना। समस्या का विवरण - हम योग को अधिकतम करने के लिए बाइनरी ट्री के

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

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

  1. सर्कुलर सरणी में अधिकतम योग जैसे कि कोई भी दो तत्व सी ++ में आसन्न नहीं हैं

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