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