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

C++ में दिए गए ऑपरेशन से ऐरे योग को अधिकतम करना


विवरण

(2 * n - 1) पूर्णांकों का एक ऐरे है। हम ऐरे में ठीक n तत्वों का चिन्ह बदल सकते हैं। दूसरे शब्दों में, हम ठीक n ऐरे तत्वों का चयन कर सकते हैं, और उनमें से प्रत्येक को -1 से गुणा कर सकते हैं। ऐरे का अधिकतम योग ज्ञात करें।

उदाहरण

यदि इनपुट ऐरे है {-2, 100, -3} तो हम -2 और -3 का चिन्ह बदलकर अधिकतम प्राप्त कर सकते हैं। चिन्ह बदलने के बाद ऐरे बन जाता है:

{2, 100, 3} और इस ऐरे का अधिकतम योग 105 है।

एल्गोरिदम

  • ऋणात्मक संख्याओं की गिनती करें।
  • संख्याओं के निरपेक्ष मान लेकर ऐरे का योग निकालें।
  • संख्याओं के निरपेक्ष मान लेकर ऐरे की न्यूनतम संख्या ढूंढें।
  • जांचें कि क्या ऋणात्मक संख्याओं की संख्या विषम है और n का मान सम है तो योग में से दो गुना m घटाएं और यह ऐरे का अधिकतम योग होगा अन्यथा, योग का मान ऐरे का अधिकतम योग होगा।
  • उपरोक्त चरणों को (2 * n - 1) बार दोहराएं।

उदाहरण

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

int getMaxSum(int* arr, int n) {
    int negtiveCnt = 0;
    int sum = 0;
    int m = INT_MAX;
    for (int i = 0; i < 2 * n - 1; ++i) {
        if (arr[i] < 0) {
            ++negtiveCnt;
        }
        sum = sum + abs(arr[i]);
        m = min(m, abs(arr[i]));
    }
    if (negtiveCnt % 2 && n % 2 == 0) {
        sum = sum - 2 * m;
        return sum;
    }
    return sum;
}

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

आउटपुट

Maximum sum = 105
  1. - C++ STL में सरणी का योग (Array Sum)

    सरणी योग ज्ञात करने के तरीके 1. शास्त्रीय विधि (लूप) सभी तत्वों पर पुनरावृति करके योग निकालें। int arr[] = {2, 5, 7, 8, 2, 6, 9}; int n = 7, sum = 0; for (int i = 0; i < n; i++) sum += arr[i]; // Output: 39 2. accumulate() फंक्शन ( हेडर) STL का बिल्ट-इन फंक्शन। #include <numeric> int su

  1. - C++ में निरपेक्ष अंतर के न्यूनतम योग वाला एरे तत्व

    यह प्रोग्राम दिए गए एरे के न्यूनतम निरपेक्ष अंतर को खोजने के लिए है जहां हमारे पास एक एरे है जिसमें विशिष्ट तत्व हैं। इस अवधारणा को बेहतर ढंग से सीखने के लिए, आइए आवश्यक चीजों को दोहराएं: एरे (Array) समान डेटा प्रकार के तत्वों का एक कंटेनर है। एरे की लंबाई पूर्वनिर्धारित होनी चाहिए। निरपेक्ष अंतर (

  1. - C++ सम एरे पहेली (Sum Array Puzzle)

    एरे (Array) एक डेटा संरचना है जो समान डेटा प्रकार के कई तत्वों को संग्रहीत करती है। यह एक बार में मानों का पूरा सेट संग्रहीत कर सकता है। लेकिन इसकी लंबाई पहले से परिभाषित होनी चाहिए। इस सम एरे पहेली में, हमें एक निश्चित आकार का एरे A1 दिया जाता है, मान लीजिए n। इस पहेली को हल करने के लिए, हम S1 नाम