你有一个背包,最多能容纳的体积是V。 现在有n种物品,每种物品有任意多个,第i种物品的体积为 ,价值为。 (1)求这个背包至多能装多大价值的物品? (2)若背包恰好装满,求至多能装多大价值的物品? 数据范围:
区块链毕设网qklbishe.com为您提供问题的解答
public class Solution {
/**
* 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
*
*
* @param v int整型
* @param n int整型
* @param nums int整型ArrayList<ArrayList<>>
* @return int整型ArrayList
*/
public ArrayList<Integer> knapsack (int v, int n, ArrayList<ArrayList<Integer>> nums) {
// write code here
ArrayList<Integer> al = new ArrayList<Integer> ();
int[] dp = new int[v+1];
int[] dpl = new int[v+1];
dp[0] = 0;
Arrays.fill(dpl,Integer.MIN_VALUE);
dpl[0] = 0;
for(int curHeave = 1;curHeave <= v;curHeave++){
for(int i = 0;i<n;i++){
int k = curHeave – nums.get(i).get(0);
if(k < 0) continue;
else{
if(dpl[k] == Integer.MIN_VALUE);
else{dpl[curHeave] = Math.max(dpl[curHeave],dpl[k]+nums.get(i).get(1));}
dp[curHeave] = Math.max(dp[curHeave],dp[k]+nums.get(i).get(1));
}
}
}
al.add(dp[v]);
if(dpl[v] == Integer.MIN_VALUE){
al.add(0);
}else{
al.add(dpl[v]);
}
return al;
}
}
以上就是关于问题你有一个背包,最多能容纳的体积是V。
现在有n种物品,每种物品有任意多个,第i种物品的体积为 ,价值为。
(1)求这个背包至多能装多大价值的物品? (2)若背包恰好装满,求至多能装多大价值的物品?
数据范围:的答案
欢迎关注区块链毕设网-
专业区块链毕业设计成品源码,定制。
区块链NFT链游项目方科学家脚本开发培训