//背包问题
public static int bag(int totalV,int[] weights,int[] values) {
if(weights==null||weights.length==0) {
return 0;
}
int n=weights.length;
int m=totalV;
int[][] v=new int[n+1][m+1];
for (int i = 0; i < v.length; i++) {
v[i][0]=0;
}
for (int i = 0; i < v[0].length; i++) {
v[0][i]=0;
}
for (int i = 1; i < v.length; i++) {
for (int j = 1; j < v[0].length; j++) {
if(weights[i-1]>j){
//当前物品的重量大于背包容量
v[i][j]=v[i-1][j];
}else {
//当前物品的重量小于背包容量
//物品的价值+背包剩余容量能装的物品的价值
v[i][j]=Math.max(v[i-1][j], v[i-1][j-weights[i-1]]+values[i-1]);
}
}
}
return v[n][m];
}
背包问题,动态规划
最新推荐文章于 2025-12-26 18:13:00 发布
本文介绍了如何用Java编写一个动态规划函数来解决背包问题,通过计算给定物品的重量和价值,确定在不超过背包容量的情况下,如何选择物品以获得最大的总价值。
1184

被折叠的 条评论
为什么被折叠?



