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

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

समस्या कथन

एक सरणी को देखते हुए []। उपसर्ग योग का अधिकतम मान ज्ञात करें जो कि गिरफ्तारी में अनुक्रमणिका i के लिए प्रत्यय योग भी है []।

उदाहरण

यदि इनपुट ऐरे है -

Arr[] ={1, 2, 3, 5, 3, 2, 1} तो आउटपुट 11 है -

  • उपसर्ग योग =गिरफ्तारी[0..3] =1 + 2 + 3 + 5 =11 और
  • प्रत्यय योग =गिरफ्तारी[3..6] =5 + 3 + 2 + 1 =11

एल्गोरिदम

  • सरणी को पार करें और सरणी प्रीसम में प्रत्येक इंडेक्स के लिए प्रीफ़िक्स योग को स्टोर करें [], जिसमें प्रीसम [i] सबएरे एआर का योग संग्रहीत करता है [0..i]
  • सरणी को फिर से पार करें और प्रत्यय योग को किसी अन्य सरणी प्रत्यय [] में संग्रहीत करें, जिसमें प्रत्यय [i] उप-सरणी गिरफ्तारी का योग संग्रहीत करता है [i..n-1]
  • प्रत्येक सूचकांक के लिए जाँच करें कि क्या अनुमान [i] प्रत्यय के बराबर है [i] और यदि वे समान हैं तो तुलना करें, अब तक के कुल अधिकतम के साथ मूल्य की तुलना करें

उदाहरण

#include <bits/stdc++.h>
using namespace std;
int getMaxSum(int *arr, int n) {
   int preSum[n];
   int suffSum[n];
   int result = INT_MIN;
   preSum[0] = arr[0];
   for (int i = 1; i < n; ++i) {
      preSum[i] = preSum[i - 1] + arr[i];
   }
   suffSum[n - 1] = arr[n - 1];
   if (preSum[n - 1] == suffSum[n - 1]) {
      result = max(result, preSum[n - 1]);
   }
   for (int i = n - 2; i >= 0; --i) {
      suffSum[i] = suffSum[i + 1] + arr[i];
      if (suffSum[i] == preSum[i]) {
         result = max(result, preSum[i]);
      }
   }
   return result;
}
int main() {
   int arr[] = {1, 2, 3, 5, 3, 2, 1};
   int n = sizeof(arr) / sizeof(arr[0]);
   cout << "Max equlibrium sum = " << getMaxSum(arr, n) << endl;
   return 0;
}

आउटपुट

जब आप उपरोक्त प्रोग्राम को संकलित और निष्पादित करते हैं। यह निम्नलिखित आउटपुट उत्पन्न करता है -

Max equlibrium sum = 11

  1. C++ में अधिकतम K सरणी तत्वों के संकेतों को फ़्लिप करके अधिकतम सबअरे योग

    इस समस्या में, हमें एक सरणी और एक पूर्णांक k दिया जाता है। हमारा कार्य एक ऐसा प्रोग्राम बनाना है जो C++ में अधिकतम k सरणी तत्वों के चिह्नों को फ़्लिप करके अधिकतम सबअरे योग प्राप्त करेगा। कोड विवरण - यहां, हमें सरणी में फ़्लिप करने के लिए अधिक से अधिक k तत्वों को खोजना होगा जो इस सरणी से बनाए गए सबअ

  1. C++ में किसी सरणी का अधिकतम औसत योग विभाजन

    समस्या कथन एक सरणी को देखते हुए, हम संख्या A की एक पंक्ति को अधिकतम K आसन्न (गैर-रिक्त) समूहों में विभाजित करते हैं, फिर स्कोर प्रत्येक समूह के औसत का योग होता है। अधिकतम स्कोर क्या हो सकता है? उदाहरण यदि इनपुट सरणी {9, 2, 5, 3, 10} है तो हम सरणी को इस प्रकार विभाजित कर सकते हैं - {9} {2, 5, 3} औ

  1. सी ++ में एक सम ऐरे पहेली?

    यहां हम सरणी से संबंधित एक दिलचस्प समस्या देखेंगे। n तत्वों के साथ एक सरणी है। हमें n तत्वों की एक और सरणी बनानी है। लेकिन दूसरी सरणी की i-वें स्थिति i-वें तत्व को छोड़कर पहले सरणी के सभी तत्वों का योग धारण करेगी। और एक बाधा यह है कि हम इस समस्या में घटाव ऑपरेटर का उपयोग नहीं कर सकते हैं। यदि हम घट