题目:
一个背包有一定的承重W,用N件物品,每件都有自己的价值,记录在数组V中, 也都有自己的重量,记录在数组W中,每件物品只能选择要装入的背包还是不装入背包 , 要求在不超过背包承重的前提下选出物品的总价值最大
动态规划思想:假设物品从1到N,一件一件物品考虑是否加入背包
递推关系式: 1) j<w(i) V(i,j)=V(i-1,j) 2) j>=w(i) V(i,j)=max{ V(i-1,j),V(i-1,j-w(i))+v(i) }
public class DTGH_Backpack {
public int backpack(int bw,int[] v,int[] w) {
int[][] dp=new int[v.length][bw+1];
for (int i = 0; i <dp[0].length ; i++) {
if (w[0]<=i){
for (int j = i; j <dp[0].length ; j++) {
dp[0][j]=v[0];
}
break;
}
}
for (int i = 1; i <dp.length ; i++) {
for (int j = 1; j <dp[0].length ; j++) {
if (j>=w[i]) {