यह देखते हुए कि कार्य अधिकतम 'M' उत्पादों को बेचकर अधिकतम लाभ की गणना करना है।
उत्पादों की कुल संख्या 'एन' है और प्रत्येक उत्पाद की लागत मूल्य और बिक्री मूल्य क्रमशः सीपी [] और एसपी [] सूचियों में दिया गया है।
इनपुट
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
निम्नलिखित कार्यक्रम में उपयोग किया गया दृष्टिकोण इस प्रकार है
-
प्रत्येक उत्पाद से प्राप्त लाभ को संग्रहीत करने के लिए एक सरणी लाभ [] प्रकार int और आकार 'N' बनाएं।
-
अंतिम अधिकतम लाभ स्टोर करने के लिए एक वैरिएबल टोटल टाइप इंट बनाएं।
-
i=0 से i
. तक लूप -
लूप में रहते हुए, लाभ सेट करें [i] =Sp [i] – Cp [i]
-
कॉल फ़ंक्शन सॉर्ट (लाभ, लाभ + एन, अधिक
()); लाभ [] सरणी को अवरोही सरणी में व्यवस्थित करने के लिए। -
फिर से i=0 से i
. तक लूप करें -
लूप में रहते हुए एक if कंडीशन सेट करें, if(Profit[i]>0) यह जांचने के लिए कि वैल्यू पॉजिटिव है या नहीं और अगर ऐसा है तो Total+=Profit[i];
सेट करें -
कुल वापसी;
उदाहरण
#include <bits/stdc++.h>
using namespace std;
//Function to find profit
int MaxProfit(int N, int M, int Cp[], int Sp[]){
int Profit[N];
int total = 0;
//Calculating profit from each product
for (int i = 0; i < N; i++)
Profit[i] = Sp[i] - Cp[i];
//Arranging profit array in descending order
sort(Profit, Profit + N, greater<int>());
//Adding the best M number of profits
for (int i = 0; i < M; i++){
if (Profit[i] > 0)
total += Profit[i];
else
break;
}
return total;
}
//Main function
int main(){
int MP;
int N=6,M=4;
int CP[] = { 1, 9, 5, 8, 2, 11 };
int SP[] = { 1, 15, 10, 16, 5, 20 };
MP = MaxProfit(N, M, CP, SP);
cout<<”Maximum Profit:”<<MP;
return 0;
} आउटपुट
यदि हम उपरोक्त कोड चलाते हैं तो हमें निम्न आउटपुट मिलेगा -
Maximum Profit: 28