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

C++ में अधिकतम एक तत्व हटाकर अधिकतम सबएरे योग को अधिकतम करना


समस्या कथन

N पूर्णांकों का एक ऐरे arr[] दिया गया है। कार्य पहले अधिकतम सब-एरे योग ढूंढना है और फिर सब-एरे से अधिकतम एक तत्व हटाना है। अधिकतम एक तत्व हटाएं ताकि हटाने के बाद अधिकतम योग अधिकतम हो।

यदि दिया गया इनपुट ऐरे है {1, 2, 3, -2, 3} तो अधिकतम सब-एरे योग {2, 3, -2, 3} है। फिर हम -2 हटा सकते हैं। हटाने के बाद शेष ऐरे बन जाता है:

{1, 2, 3, 3} योग 9 के साथ जो अधिकतम है।

एल्गोरिदम

1. कडाने के एल्गोरिदम का उपयोग करके अधिकतम सबएरे योग ढूंढें।
2. एक बार योग मिल जाने पर, कुछ मामूली बदलावों के साथ कडाने के एल्गोरिदम को फिर से लागू करके अधिकतम योग फिर से ढूंढें।

उदाहरण

#include <bits/stdc++.h>
using namespace std;

int getMaxSubarraySum(int* arr, int n) {
    int max = INT_MIN;
    int currentMax = 0;
    for (int i = 0; i < n; ++i) {
        currentMax = currentMax + arr[i];
        if (max < currentMax) {
            max = currentMax;
        }
        if (currentMax < 0) {
            currentMax = 0;
        }
    }
    return max;
}

int getMaxSum(int* arr, int n) {
    int cnt = 0;
    int minVal = INT_MAX;
    int minSubarr = INT_MAX;
    int sum = getMaxSubarraySum(arr, n);
    int max = INT_MIN;
    int currentMax = 0;
    for (int i = 0; i < n; ++i) {
        currentMax = currentMax + arr[i];
        ++cnt;
        minSubarr = min(arr[i], minSubarr);
        if (sum == currentMax) {
            if (cnt == 1) {
                minVal = min(minVal, 0);
            } else {
                minVal = min(minVal, minSubarr);
            }
        }
        if (currentMax < 0) {
            currentMax = 0;
            cnt = 0;
            minSubarr = INT_MAX;
        }
    }
    return sum - minVal;
}

int main() {
    int arr[] = {1, 2, 3, -2, 3};
    int n = sizeof(arr) / sizeof(arr[0]);
    cout << "Maximum sum = " << getMaxSum(arr, n) << endl;
    return 0;
}

आउटपुट

Maximum sum = 9
  1. - C++ में अधिकतम K सरणी तत्वों के चिह्न बदलकर अधिकतम सबएरे सम

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

  1. - C++ में अधिकतम दो तत्वों को उलटने के बाद अधिकतम सबएरे सम

    इस समस्या में, हमें एक सरणी दी गई है। हमारा कार्य एक प्रोग्राम बनाना है जो C++ में अधिकतम दो तत्वों को उलटने के बाद अधिकतम सबएरे सम ढूंढेगा।समस्या विवरण - यहां, हमें वह सबएरे ढूंढना है जो सरणी के किन्हीं दो संख्याओं के चिह्न को उलटने पर अधिकतम सम उत्पन्न करेगा।समस्या को समझने के लिए एक उदाहरण लेते ह

  1. - C++ में K नेगेशन के बाद ऐरे योग को अधिकतम करना

    समस्या कथन आकार n का एक ऐरे और एक संख्या k दी गई है। हमें ऐरे को k बार संशोधित करना है। ऐरे संशोधित करने का मतलब है प्रत्येक ऑपरेशन में हम किसी भी ऐरे तत्व arr[i] को उसके नकारात्मक से बदल सकते हैं यानी arr[i] = -arr[i]। कार्य इस ऑपरेशन को इस तरह करना है कि k ऑपरेशन के बाद ऐरे का योग अधिकतम हो। यद