通过销售最多使用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 <N

  • 在循环中,设置Profit [i] = Sp [i] – Cp [i]

  • 调用函数sort(Profit,Profit + N,Greater <int>()); 将Profit []数组排列为降序数组。

  • 从i = 0再次循环直到i <M

  • 在循环中设置if条件,if(Profit [i]> 0)检查值是否为正,如果是,则设置total + = Profit [i];

  • 总回报;

示例

#include <bits/stdc++.h>

using namespace std;

//寻找利润的功能

int MaxProfit(int N, int M, int Cp[], int Sp[]){

   int Profit[N];

   int total = 0;

   //计算每种产品的利润

   for (int i = 0; i < N; i++)

      Profit[i] = Sp[i] - Cp[i];

   //按降序排列利润数组

   sort(Profit, Profit + N, greater<int>());

   //加上最好的M个利润

   for (int i = 0; i < M; i++){

      if (Profit[i] > 0)

         total += Profit[i];

      else

         break;

   }

   return total;

}

//主要功能

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

以上是 通过销售最多使用C ++的M产品来最大化利润 的全部内容, 来源链接: utcz.com/z/322168.html

回到顶部