题目:
老李是货运公司承运人,老李的货车额定载货重量为Wt。现有两种货物、货物A单件重量为
wa,单件运费利为pa,货物B单件重量为wb,单件运费利润为pb•老李每次发车时载货总
重量刚好为货车额定的载货重量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:
输入
11211
输出
2
题解:
比较简单,因为是最大值,所以尽量满载,假设a的数量为count,count>1,
那么因为b必须有一个,所以b的数量就是 (totalweight - weightA*count)/weightB
a最大数量就是(totalWeight-weightB)/weightA,然后按照a数量从1到最大值遍历利润,找到最大值就可以了
代码:
import java.util.Scanner;
public class CarWeight {
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
String input_str = in.nextLine();
String[] tmp2 = input_str.split(" ");
int[] nums = new int[tmp2.length];
for (int i = 0; i < tmp2.length; i++) {
nums[i] = Integer.parseInt(tmp2[i]);
}
int wa = nums[0];
int wb = nums[1];
int pa = nums[3];
int pb = nums[4];
int wt = nums[2];
int countA = 1;
int countAmax = (wt - wb) / wa;//b物品至少有一个
int countb = 1;
int result = 0;
for (int i = 1; i <= countAmax; i++) {
countb = (wt - i * wa) / wb;
result = Math.max(result, pa * i + pb * countb);
}
System.out.println(result);
}
}
验证: