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

C++ में अधिकतम योग द्वि-टॉनिक उप-अनुक्रम

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

द्वि-टॉनिक अनुवर्ती एक विशेष अनुक्रम है जिसके तत्व पहले बढ़ते हैं और फिर घटते हैं।

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

इनपुट

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

आउटपुट

33

स्पष्टीकरण

द्वि-टॉनिक अनुक्रम जो सबसे बड़ा योग देता है वह है {2, 3, 7, 9, 6, 5, 1} योग =2 + 3 + 7 + 9 + 6 + 5 + 1 =33

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

अधिकतम योग बिटोनिक बाद का पता लगाने के लिए, हम दो सरणियाँ बनाएंगे, incSeq[] और decSeq[] इस तरह से कि सूचकांक में एक तत्व के लिए, incSeq[i] में arr[0…i] सख्ती से सभी तत्वों का योग है बढ़ रहा है और decSeq[i] में arr से सभी तत्वों का योग है [i…n] सख्ती से घट रहा है।

अंत में, हम (incSeq[i] + decSeq[i] - arr[i]) से अधिकतम मान को अधिकतम मान के रूप में वापस कर देंगे।

उदाहरण

हमारे समाधान के शब्दों को स्पष्ट करने के लिए कार्यक्रम,

#include <iostream>
using namespace std;
int calcMaxVal(int a, int b){
   if(a > b)
      return a;
      return b;
}
int findMaxSumBiTonicSubSeq(int arr[], int N){
   int maxSum = -1;
   int incSeq[N], decSeq[N];
   for (int i = 0; i < N; i++){
      decSeq[i] = arr[i];
      incSeq[i] = arr[i];
   }
   for (int i = 1; i < N; i++)
      for (int j = 0; j < i; j++)
         if (arr[i] > arr[j] && incSeq[i] < incSeq[j] + arr[i]) incSeq[i] = incSeq[j] + arr[i];
   for (int i = N - 2; i >= 0; i--)
      for (int j = N - 1; j > i; j--)
         if (arr[i] > arr[j] && decSeq[i] < decSeq[j] + arr[i])
         decSeq[i] = decSeq[j] + arr[i];
   for (int i = 0; i < N; i++)
      maxSum = calcMaxVal(maxSum, (decSeq[i] + incSeq[i] - arr[i]));
   return maxSum;
}
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 Bi-tonic subsequence is : "<<findMaxSumBiTonicSubSeq(arr, N);
   return 0;
}

आउटपुट

The Maximum Sum of Bi-tonic subsequence is : 33

  1. सी++ में अधिकतम सबरे योग मॉड्यूलो एम

    इस समस्या में, हमें n आकार की एक सरणी और एक पूर्णांक m दिया जाता है। हमारा काम एक ऐसा प्रोग्राम बनाना है जो C++ में अधिकतम सबअरे योग मॉड्यूल m ढूंढेगा। कार्यक्रम विवरण - यहां, हम सबएरे के सभी तत्वों के योग को m से विभाजित करके प्राप्त अधिकतम मान प्राप्त करेंगे। समस्या को समझने के लिए एक उदाहरण लेत

  1. C++ में उपसर्ग योग का उपयोग करते हुए O(n) में अधिकतम सबअरे योग

    समस्या कथन सकारात्मक और नकारात्मक पूर्णांकों की एक सरणी को देखते हुए, उस सरणी में अधिकतम सबअरे योग ज्ञात करें उदाहरण यदि इनपुट ऐरे − {-12, -5, 4, -1, -7, 1, 8, -3} है तो आउटपुट 9 है एल्गोरिदम इनपुट सरणी के उपसर्ग योग की गणना करें। प्रारंभ करें− min_prefix_sum =0, रेस =-अनंत i =0 से n के ल

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

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