华为机考真题 -- 高效货运

题目描述:

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

  • 6
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值