दिया गया कार्य अधिकतम '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