প্রদত্ত কাজটি হল সর্বাধিক '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
নিম্নলিখিত প্রোগ্রামে ব্যবহৃত পদ্ধতি
-
প্রতিটি পণ্য থেকে প্রাপ্ত লাভ সঞ্চয় করতে int এবং আকার 'N' টাইপের একটি অ্যারে প্রফিট[] তৈরি করুন৷
-
চূড়ান্ত সর্বোচ্চ মুনাফা সঞ্চয় করার জন্য মোট int-এর একটি পরিবর্তনশীল তৈরি করুন।
-
i=0 থেকে i
পর্যন্ত লুপ করুন -
লুপে থাকা অবস্থায়, Profit[i] =Sp[i] – Cp[i>
সেট করুন -
কল ফাংশন বাছাই (লাভ, লাভ + N, বৃহত্তর
()); ডিসেন্ডিং অ্যারেতে লাভ[] অ্যারে সাজাতে। -
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