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

아래 프로그램에서 사용하는 접근 방식은 다음과 같습니다.

  • 각 제품에서 얻은 이익을 저장하기 위해 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