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

C++ में दिए गए ऑपरेशंस के बाद सरणी में अधिकतम संभव गुणनफल


आकार N की सरणी दी गई है। N-1 ऑपरेशंस करें: या तो a[j] = a[i]*a[j] करके a[i] हटाएं, या सिर्फ a[i] हटाएं (केवल एक बार)। शेष मान को अधिकतम करें।

रणनीति: नकारात्मक संख्याओं की गिनती, शून्य की गिनती। विषम नकारात्मक होने पर सबसे छोटे निरपेक्ष मान वाले नकारात्मक को हटाएं। शून्य को हटाएं। ऑपरेशंस प्रिंट करें।

उदाहरण: {5, -2, 0, 1, -3} → ऑपरेशंस अनुक्रम आउटपुट।

C++ कार्यान्वयन

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

void MaximumProduct(int a[], int n) {
    int cntneg = 0, cntzero = 0, used[n] = {0}, pos = -1;
    for (int i = 0; i < n; ++i) {
        if (a[i] == 0) { used[i] = 1; cntzero++; }
        if (a[i] < 0) {
            cntneg++;
            if (pos == -1 || abs(a[pos]) > abs(a[i])) pos = i;
        }
    }
    if (cntneg % 2 == 1) used[pos] = 1;
    if (cntzero == n || (cntzero == n - 1 && cntneg == 1)) {
        for (int i = 0; i < n - 1; ++i) cout << 1 << " " << i + 1 << " " << i + 2 << endl;
        return;
    }
    int lst = -1;
    for (int i = 0; i < n; ++i) {
        if (used[i]) {
            if (lst != -1) cout << 1 << " " << lst + 1 << " " << i + 1 << endl;
            lst = i;
        }
    }
    if (lst != -1) cout << 2 << " " << lst + 1 << endl;
    lst = -1;
    for (int i = 0; i < n; ++i) {
        if (!used[i]) {
            if (lst != -1) cout << 1 << " " << lst + 1 << " " << i + 1 << endl;
            lst = i;
        }
    }
}

int main() {
    int a[] = {5, -2, 0, 1, -3};
    int n = sizeof(a) / sizeof(a[0]);
    MaximumProduct(a, n);
    return 0;
}

आउटपुट

2 3 1 1 2 1 2 4 1 4 5
  1. - C++ में ऐरे में अधिकतम संतुलन योग

    समस्या कथन एक ऐरे arr[] दिया गया है। इंडेक्स i के लिए arr[] में अधिकतम प्रीफिक्स योग का मान ढूंढें जो सफिक्स योग भी हो। उदाहरण यदि इनपुट ऐरे है - Arr[] = {1, 2, 3, 5, 3, 2, 1} तो आउटपुट 11 है - प्रीफिक्स योग = arr[0..3] = 1 + 2 + 3 + 5 = 11 और सफिक्स योग = arr[3..6] = 5 + 3 + 2 + 1 = 11 एल्गोरिदम

  1. - C++ में दिए गए ऐरे और k के लिए |ai + aj - k| का न्यूनतम संभव मान

    समस्या विवरण आपको n इंटीजर का एक ऐरे और एक इंटीजर K दिया गया है। उन कुल अनऑर्डर्ड जोड़े {i, j} की संख्या ढूंढें जैसे कि |ai + aj - k| का निरपेक्ष मान न्यूनतम संभव हो जहां i != j। उदाहरण यदि arr[] = {0, 4, 6, 2, 4} और k = 7 तो हम न्यूनतम मान 1 के साथ निम्नलिखित 5 जोड़े बना सकते हैं: {0, 6}, {4, 2}, {

  1. - C++ STL का उपयोग करके ऐरे का गुणनफल

    यह ऐरे गुणनफल ज्ञात करने के लिए C++ प्रोग्राम का एक उदाहरण है। एल्गोरिदम Begin ऐरे के मान इनिशियलाइज़ करें। ऐरे का गुणनफल लौटाने के लिए उपयोगकर्ता परिभाषित फंक्शन accumulate को कॉल करें। समाधान प्रिंट करें। End. उदाहरण कोड #include <iostream> #include <numeric> using names