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

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


समस्या कथन

आकार n का एक ऐरे और एक संख्या k दी गई है। हमें ऐरे को k बार संशोधित करना है।

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

यदि इनपुट arr[] = {7, -3, 5, 4, -1} तो अधिकतम योग 20 होगा।

  • पहले -3 को नकारें। अब ऐरे बन जाता है {7, 3, 5, 4, -1}
  • -1 को नकारें। अब ऐरे बन जाता है {7, 3, 5, 4, 1}

एल्गोरिदम

1. वर्तमान ऑपरेशन के लिए ऐरे में न्यूनतम तत्व arr[i] को -arr[i] से बदलें।
2. एक बार न्यूनतम तत्व 0 बन जाने पर, हमें और बदलाव करने की आवश्यकता नहीं है। इस तरह हम K ऑपरेशन के बाद ऐरे का योग अधिकतम कर सकते हैं।

उदाहरण

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

int getMaxSum(int* arr, int n, int k) {
    for (int i = 1; i <= k; ++i) {
        int minValue = INT_MAX;
        int index = -1;
        for (int j = 0; j < n; ++j) {
            if (arr[j] < minValue) {
                minValue = arr[j];
                index = j;
            }
        }
        if (minValue == 0) {
            break;
        }
        arr[index] = -arr[index];
    }
    int sum = 0;
    for (int i = 0; i < n; ++i) {
        sum = sum + arr[i];
    }
    return sum;
}

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

आउटपुट

Maximum sum = 20
  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++ सम एरे पहेली (Sum Array Puzzle)

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

  1. - C++ में सम ऐरे पजल (बिना घटाव ऑपरेटर के)

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