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

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

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

समस्या का विवरण

वृत्ताकार सरणी के लिए, हमें सरणी के तत्वों का अधिकतम योग ज्ञात करना होगा जैसे कि आसन्न तत्वों को नहीं लिया जा सकता है यानी हमें वैकल्पिक तत्वों को लेने की आवश्यकता है।

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

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

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

इनपुट

cirArr[] = {4, 1, 5, 3, 2}

आउटपुट

9

स्पष्टीकरण

सर्कुलर परवर्ती का अधिकतम योग [4, 5, 2] है। योग =9

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

समस्या का समाधान अधिकतम योग खोजने के लिए एक गतिशील प्रोग्रामिंग दृष्टिकोण का उपयोग कर रहा है। वृत्ताकार सरणी को दो सरणियों के रूप में मानकर योग निकाला जा सकता है, एक सूचकांक 0 से N-2 तक और दूसरा सूचकांक 1 से n-1 तक। यह दो सरणियाँ बनाएगा और इन सरणी से अधिकतम योग परिणाम होगा।

उदाहरण

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

#include <iostream>
using namespace std;
int calcMaxVal(int a, int b){
   if(a > b)
      return a;
   return b;
}
int calcMaxSumSubSeq(int cirArr[], int start, int end, int n) {
   int DP[n];
   int maxSum = 0;
   for (int i = start; i < (end + 1); i++) {
      DP[i] = cirArr[i];
      if (maxSum < cirArr[i])
         maxSum = cirArr[i];
   }
   for (int i = (start + 2); i < (end + 1); i++) {
      for (int j = 0; j < i - 1; j++) {
         if (DP[i] < DP[j] + cirArr[i]) {
            DP[i] = DP[j] + cirArr[i];
            if (maxSum < DP[i])
               maxSum = DP[i];
         }
      }
   }
   return maxSum;
}
int findMaxSum(int cirArr[], int n){
   int maxSumArray1 = calcMaxSumSubSeq(cirArr, 0, (n-2), n);
   int maxSumArray2 = calcMaxSumSubSeq(cirArr, 1, (n-1), n);
   int maxSum = calcMaxVal(maxSumArray1, maxSumArray2);
   return maxSum;
}
int main(){
   int cirArr[] = {4, 1, 5, 3, 2};
   int n = sizeof(cirArr)/sizeof(cirArr[0]);
   cout<<"The maximum sum in circular array such that no two elements are adjacent is "<<findMaxSum(cirArr, n);
   return 0;
}

आउटपुट

The maximum sum in circular array such that no two elements are adjacent is 9

  1. उप-अनुक्रम के लिए अधिकतम संभव योग जैसे कि कोई भी दो तत्व दूरी पर दिखाई नहीं देते हैं <K C++ प्रोग्राम में सरणी में

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

  1. C++ प्रोग्राम में दो ऐरे के उत्पादों का अधिकतम योग

    इस समस्या में, हमें n आकार की दो सरणियाँ arr1[] और arr2[] दी गई हैं। हमारा कार्य दो ऐरे के उत्पादों का अधिकतम योग खोजने के लिए एक प्रोग्राम बनाना है। समस्या का विवरण - हमें दो सरणियों के उत्पादों का अधिकतम योग ज्ञात करना होगा। हमें arr1 से एक तत्व के उत्पाद का अधिकतम योग और arr2 से अन्य तत्वों को ख

  1. बाइनरी ट्री में नोड्स का अधिकतम योग जैसे कि C++ प्रोग्राम में डायनामिक प्रोग्रामिंग का उपयोग करते हुए कोई भी दो आसन्न नहीं हैं

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