忘记存原题了,不过题目数据倒是还记得
题目大致描述:
你拥有一个购物车免单机会,免单商品通过包裹派送,但快递限制了包裹的最大体积V和最大重量W
有若干种商品,每个商品都有4个参数体积Vi、重量Wi、价值Pi、商品数量Ci、商品种类Ti
(商品种类总4种:1、2、3、4,但已知1和3不能同时打包)
计算出在不超出限制的最大免单价值
思路:
分组背包
对于前两个约束(体积、重量)01背包就行。因为1和3商品类型冲突,分组背包,其实也就2组
由于没存原题,这里就直接贴方法代码了
private static int totalPrice(int categoryCount, int totalVolume, int totalWeight, int[] volume, int[] weight,
int[] stock, int[] price, int[] itemType) {
// categoryCount --- 商品数量
// totalVolume --- 最大体积
// totalWeight --- 最大重量
// volume --- 商品体积数组
// weight --- 商品重量数组
// stock --- 商品数量数组
// price --- 商品价值数