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

C++ में अधिकतम M उत्पाद बेचकर लाभ को अधिकतम करना


दिया गया कार्य अधिकतम 'M' उत्पाद बेचकर किए जा सकने वाले अधिकतम लाभ की गणना करना है।

कुल उत्पादों की संख्या 'N' है और प्रत्येक उत्पाद का लागत मूल्य और बिक्री मूल्य क्रमशः CP[] और SP[] सूचियों में दिया गया है।

इनपुट

N=6, M=4
CP[] = {1, 9, 5, 8, 2, 11}
SP[] = {1, 15, 10, 16, 5, 20}

आउटपुट

28

व्याख्या - सभी उत्पादों को बेचने से प्राप्त लाभ क्रमशः 0, 6, 5, 8, 3, 9 हैं।

इसलिए, केवल 4 उत्पाद बेचकर अधिकतम लाभ कमाने के लिए, सबसे अधिक लाभ वाले उत्पादों को चुना जाना चाहिए, यानी उत्पाद संख्या 2, 3, 4 और 6।

अधिकतम लाभ = 6+5+8+9 = 28

इनपुट

N=3, M=2
CP[] = {10, 20, 30}
SP[] = {19, 22, 38}

आउटपुट

17

नीचे दिए गए प्रोग्राम में उपयोग किया गया दृष्टिकोण

  • 'N' आकार के इंट टाइप का एक Profit[] ऐरे बनाएं ताकि प्रत्येक उत्पाद से प्राप्त लाभ संग्रहीत किया जा सके।
  • अंतिम अधिकतम लाभ संग्रहीत करने के लिए इंट टाइप का एक Total वेरिएबल बनाएं।
  • i=0 से i
  • लूप में, Profit[i] = SP[i] - CP[i] सेट करें
  • Profit[] ऐरे को अवरोही क्रम में व्यवस्थित करने के लिए sort(Profit, Profit + N, greater<int>()) फंक्शन कॉल करें।
  • फिर से i=0 से i
  • लूप में एक if शर्त सेट करें, if(Profit[i] > 0) यह जांचने के लिए कि मान पॉजिटिव है या नहीं और यदि हां तो total += Profit[i] सेट करें
  • total रिटर्न करें

उदाहरण

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

// लाभ खोजने का फंक्शन
int MaxProfit(int N, int M, int Cp[], int Sp[]) {
    vector<int> Profit(N);
    int total = 0;
    
    // प्रत्येक उत्पाद से लाभ की गणना
    for (int i = 0; i < N; i++)
        Profit[i] = Sp[i] - Cp[i];
    
    // लाभ ऐरे को अवरोही क्रम में व्यवस्थित करना
    sort(Profit.begin(), Profit.end(), greater<int>());
    
    // सर्वोत्तम M संख्या के लाभ जोड़ना
    for (int i = 0; i < M; i++) {
        if (Profit[i] > 0)
            total += Profit[i];
        else
            break;
    }
    return total;
}

// मुख्य फंक्शन
int main() {
    int N = 6, M = 4;
    int CP[] = {1, 9, 5, 8, 2, 11};
    int SP[] = {1, 15, 10, 16, 5, 20};
    int MP = MaxProfit(N, M, CP, SP);
    cout << "Maximum Profit: " << MP;
    return 0;
}

आउटपुट

Maximum Profit: 28

  1. भूलभुलैया III - C++ भूलभुलैया III - C++

    मान लीजिए एक भूलभुलैया है जिसमें खाली स्थान और दीवारें हैं और उस भूलभुलैया में एक गेंद भी है। गेंद ऊपर (u), नीचे (d), बाएं (l) या दाएं (r) दिशाओं में लुढ़ककर खाली स्थानों से गुजर सकती है, लेकिन यह दीवार से टकराने तक लुढ़कती रहती है। जब गेंद रुकती है, तो यह अगली दिशा चुन सकती है। उस भूलभुलैया में एक

  1. - C++ में मैट्रिक्स रीशेप

    समस्या विवरण विभिन्न प्लेटफॉर्म पर रीशेप नामक एक बहुत उपयोगी फ़ंक्शन होता है, जिसका उपयोग मैट्रिक्स को एक नए आकार में बदलने के लिए किया जाता है लेकिन डेटा वही रहता है। यदि हमारे पास एक मैट्रिक्स है और दो मान r और c हैं जो क्रमशः वांछित रीशेप मैट्रिक्स की पंक्ति संख्या और स्तंभ संख्या के लिए हैं। उ

  1. C++ में जॉब शेड्यूलिंग में अधिकतम लाभ (Maximum Profit in Job Scheduling) C++ में जॉब शेड्यूलिंग में अधिकतम लाभ (Maximum Profit in Job Scheduling)

    समस्या विवरण n अलग-अलग कार्य दिए गए हैं। प्रत्येक कार्य startTime[i] से endTime[i] तक चलता है और profit[i] लाभ देता है। हमें ऐसे कार्यों का सबसेट चुनना है जिनके समय ओवरलैप न हों, ताकि कुल लाभ अधिकतम हो। यदि एक कार्य समय X पर समाप्त होता है, तो दूसरा कार्य समय X पर शुरू हो सकता है। उदाहरण इनपुट sta