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

C++ में अधिकतम योग बिटोनिक सबअरे

इस समस्या में, हमें एक ऐरे एरर [] दिया जाता है। हमारा काम C++ में अधिकतम योग बिटोनिक सबरे खोजने के लिए एक प्रोग्राम बनाना है।

बिटोनिक सबरे एक विशेष उप-सरणी है जिसमें तत्व पहले सख्ती से बढ़ता है और फिर एक निश्चित बिंदु पर पहुंचने के बाद सख्ती से घटता है।

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

इनपुट

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

आउटपुट

30

स्पष्टीकरण

बिटोनिक सबरे [2, 3, 7, 9, 6, 3] है। योग =2 + 3 + 7 + 9 + 6 + 3 =30

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

समाधान बिटोनिक बाद की समस्या के समान है। हम दो सरणियाँ बनाएंगे incSubArr[] और decSubArr[]। इससे स्टोर बढ़ते और घटते सबरे बनते हैं। इंडेक्स i पर, incSubArr[i] 0 से i तक बढ़ते हुए सबरे को ढूंढेगा। और decSubArr[i] i से N तक बढ़ते हुए उप-सरणी पाएंगे।

मैक्ससम अधिकतम मूल्य है जिसकी गणना (incSubArr[i] + decSubArr[i] - arr[i]) के रूप में की जाती है।

उदाहरण

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

#include <iostream>
using namespace std;
int findMaxSumBiTonicSubArr(int arr[], int N){
   int incSubArr[N], decSubArr[N];
   int max_sum = -1;
   incSubArr[0] = arr[0];
   for (int i=1; i<N; i++)
      if (arr[i] > arr[i-1])
         incSubArr[i] = incSubArr[i-1] + arr[i];
      else
         incSubArr[i] = arr[i];
   decSubArr[N-1] = arr[N-1];
   for (int i= (N-2); i>=0; i--)
      if (arr[i] > arr[i+1])
         decSubArr[i] = decSubArr[i+1] + arr[i];
      else
         decSubArr[i] = arr[i];
   for (int i=0; i<N; i++)
      if(max_sum < (incSubArr[i] + decSubArr[i] - arr[i]))
max_sum = incSubArr[i] + decSubArr[i] - arr[i];
   return max_sum;
}
int main(){
   int arr[] = {4, 2, 3, 7 ,9, 6, 3, 5, 1};
   int N = sizeof(arr) / sizeof(arr[0]);
   cout<<"The Maximum Sum of Bitonic Subarray is "<<findMaxSumBiTonicSubArr(arr, N);
   return 0;
}

आउटपुट

The Maximum Sum of Bitonic Subarray is 30

  1. सी ++ में एक सरणी में अधिकतम संतुलन योग

    समस्या कथन एक सरणी को देखते हुए []। उपसर्ग योग का अधिकतम मान ज्ञात करें जो कि गिरफ्तारी में अनुक्रमणिका i के लिए प्रत्यय योग भी है []। उदाहरण यदि इनपुट ऐरे है - Arr[] ={1, 2, 3, 5, 3, 2, 1} तो आउटपुट 11 है - उपसर्ग योग =गिरफ्तारी[0..3] =1 + 2 + 3 + 5 =11 और प्रत्यय योग =गिरफ्तारी[3..6] =5 + 3 +

  1. C++ में अधिकतम योग सख्ती से बढ़ते हुए सबरे का पता लगाएं

    मान लीजिए कि हमारे पास n पूर्णांकों की एक सरणी है। सख्ती से बढ़ते उपसरणियों का अधिकतम योग ज्ञात कीजिए। तो अगर सरणी [1, 2, 3, 2, 5, 1, 7] की तरह है, तो योग 8 है। इस सरणी में तीन सख्ती से बढ़ते उप-सरणी हैं ये {1, 2, 3}, {2 , 5} और {1, 7}। अधिकतम योग उप-सरणी {1, 7} है इस समस्या को हल करने के लिए, हमें

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

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