题目描述:
1. 老李是货运公司承运人,老李的货车额定载货重量为 wt;
2. 现有两种货物:货物 A 单件重量为 wa,单件运费利润为 pa;货物 B 单件重量为 wb,单件运费利润为 pb;
3. 老李每次发车时载货总重量刚好为货车额定的载货重量 wt,车上必须同时有货物 A 和货物 B ,货物A、B不可切割。
请问老李单次满载运输可获得的最高利润是多少?
输入描述:
第一列输入为货物 A 的单件重量 wa, 0 < wa < 10000
第二列输入为货物 B 的单件重量 wb, 0 < wb < 10000
第三列输入为货车的额定载重 wt, 0 < wt < 100000
第四列输入为货物 A 的单件运费利润 pa, 0 < pa < 1000
第五列输入为货物 B 的单件运费利润 pb, 0 < pb < 1000
输出描述:
单次满载运输的最高利润
示例1:
输入
10 8 36 15 7
输出
44
示例2:
输入
1 1 2 1 1
输出
2
C++源码:
#include <iostream>
#include <cmath>
#include <algorithm>
using namespace std;
int main() {
int wa, wb, wt, pa, pb;
cin >> wa >> wb >> wt >> pa >> pb;
int profit = 0; // 初始化最大利润为0
// 遍历可能的货物A的数量
for (int x = 1; x <= wt / wa; ++x) {
// 计算在装x件A后,还能装多少件B
int leftWeight = wt - wa * x;
if (leftWeight > 0) {
int y = leftWeight / wb;
if (y > 0) { // 确保至少装一件B
int total_weight = wa * x + wb * y;
if (total_weight == wt) { // 总重量必须正好等于额定载重
int currProfit = pa * x + pb * y;
profit = max(profit, currProfit);
}
}
}
}
cout << profit << endl;
system("pause");
return 0;
}