최대 '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'의 배열 Profit[]을 만듭니다.
-
최종 최대 이익을 저장하기 위해 int 유형의 변수 Total을 만듭니다.
-
i=0에서 i
까지 루프 -
루프에 있는 동안 Profit[i] =Sp[i] – Cp[i]
를 설정합니다. -
호출 함수 sort(Profit, Profit + N, better
() ); Profit[] 배열을 내림차순으로 정렬합니다. -
다시 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