Computer >> Máy Tính >  >> Lập trình >> C ++

Tối đa hóa lợi nhuận bằng cách bán tối đa M sản phẩm trong C ++


Nhiệm vụ được giao là tính toán lợi nhuận tối đa có thể kiếm được bằng cách bán nhiều nhất ‘M’ sản phẩm.

Tổng số sản phẩm là "N" và giá vốn và giá bán của mỗi sản phẩm được đưa ra trong danh sách CP [] và SP [] tương ứng.

Đầu vào

N=6, M=4
CP[]={1,9,5,8,2,11}
SP[]={1,15,10,16,5,20}

Đầu ra

28

Giải thích - Lợi nhuận thu được khi bán tất cả các sản phẩm lần lượt là 0,6,5,8,3,9.

Vì vậy, để có thể đạt lợi nhuận tối đa khi chỉ bán 4 sản phẩm thì cần chọn sản phẩm có lợi nhuận cao nhất, đó là sản phẩm số 2,3,4 và 6.

Lợi nhuận tối đa =6 + 5 + 8 + 9 =28

Đầu vào

N=3, M=2
CP[]={10,20,30}
SP[]={19,22,38}

Đầu ra

17

Phương pháp tiếp cận được sử dụng trong chương trình dưới đây như sau

  • Tạo mảng Lợi nhuận [] có kiểu int và kích thước ‘N’ để lưu trữ lợi nhuận thu được từ mỗi sản phẩm.

  • Tạo một biến Tổng của kiểu int để lưu trữ lợi nhuận tối đa cuối cùng.

  • Lặp lại từ i =0 đến i

  • Trong khi lặp lại, đặt Lợi nhuận [i] =Sp [i] - Cp [i]

  • Gọi hàm sắp xếp (Lợi nhuận, Lợi nhuận + N, lớn hơn ()); để sắp xếp mảng Lợi nhuận [] trong mảng giảm dần.

  • Một lần nữa lặp lại từ i =0 cho đến i

  • Trong vòng lặp đặt điều kiện if, if (Profit [i]> 0) để kiểm tra xem giá trị có dương hay không và nếu có thì đặt tổng + =Profit [i];

  • tổng trở lại;

Ví dụ

#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;
}

Đầu ra

Nếu chúng ta chạy đoạn mã trên, chúng ta sẽ nhận được kết quả sau -

Maximum Profit: 28