题目:
老李是货运公司承运人,老李的货车额定载货重量为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);}
}
验证: