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

C++ में अधिकतम सर्कुलर सबअरे योग


हमें एक सरणी दी गई है और कार्य उप-सरणी बनाना है ताकि एक वृत्ताकार रूप में उपसरणियों का योग अधिकतम मान प्राप्त करे।

इनपुट - int arr[] ={1, 2, 8, 4, 3, 0, 7}

आउटपुट − अधिकतम सर्कुलर सबअरे योग − 22

. है

स्पष्टीकरण - हमें एक सरणी दी गई है जिसमें {1, 2, 8, 4, 3, 0, 7} है और इसका उप-सरणी अधिकतम योग 7 + 1 + 2+ 8 + 4 22 है।

इनपुट - int arr[] ={ 2, 5, -1, 6, 9, 4, -5}

आउटपुट − अधिकतम सर्कुलर सबअरे योग − 25

. है

स्पष्टीकरण - हमें एक सरणी दी गई है जिसमें {2, 5, -1, 6, 9, 4, -5} है और इसका उप-सरणी अधिकतम योग 4 + 2 + 5 - 1 + 6 + 9 25 है।

नीचे दिए गए प्रोग्राम में इस्तेमाल किया गया तरीका इस प्रकार है

  • पूर्णांक तत्वों की एक सरणी इनपुट करें जिसमें सकारात्मक और नकारात्मक दोनों मान हों।

  • एक सरणी के आकार की गणना करें।

  • आगे की प्रक्रिया के लिए फ़ंक्शन में एक सरणी और आकार पास करें।

  • कुल के रूप में एक अस्थायी चर बनाएँ और इसे 0 पर सेट करें

  • एक सरणी के आकार तक i से 0 तक के लिए लूप प्रारंभ करें

  • लूप के अंदर, टोटल के साथ टोटल सेट करें + arr[i]

  • अस्थायी सेट करें =एआर [0], temp_2 =एआर [0], temp_3 =एआर [0], temp_4 =एआर [0]

  • एक सरणी के आकार तक I से 1 तक के लिए लूप प्रारंभ करें

  • लूप सेट के अंदर अस्थायी =अधिकतम (अस्थायी + गिरफ्तारी [i], गिरफ्तारी [i]), temp_2 =अधिकतम (temp_2, अस्थायी), temp_3 =मिनट (temp_3 + गिरफ्तारी [i], गिरफ्तारी [i]), temp_4 =मिनट (temp_4, temp_3)

  • IF size ==1 चेक करें और फिर arr[0]

    लौटाएं
  • IF temp_4 ==कुल जांचें, फिर temp_2 वापस करें

  • max_sum =max(temp_3, कुल - temp_4) सेट करें

  • वापसी max_sum

  • परिणाम प्रिंट करें।

उदाहरण

#include <bits/stdc++.h>
using namespace std;
int maximum(int arr[], int size){
   int total = 0;
   for (int i = 0; i < size; i++){
      total += arr[i];
   }
   int temp = arr[0];
   int temp_2 = arr[0];
   int temp_3 = arr[0];
   int temp_4 = arr[0];
   for (int i = 1; i < size; i++){
      temp = max(temp + arr[i], arr[i]);
      temp_2 = max(temp_2, temp);
      temp_3 = min(temp_3 + arr[i], arr[i]);
      temp_4 = min(temp_4, temp_3);
   }
   if (size == 1){
      return arr[0];
   }
   if (temp_4 == total){
      return temp_2;
   }
   int max_sum = max(temp_3, total - temp_4);
   return max_sum;
}
int main(){
   int arr[] = { 2, 5, -1, 6, 9, 4, -5 };
   int size = sizeof(arr) / sizeof(arr[0]);
   cout<<"Maximum circular subarray sum is: "<<maximum(arr, size) << endl;
   return 0;
}

आउटपुट

यदि हम उपरोक्त कोड चलाते हैं तो यह निम्न आउटपुट उत्पन्न करेगा -

Maximum circular subarray sum is: 25

  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} हम इस समस्या का समाधान फूट डालो और ज