public class Backpack {
static class Item {
String name;
int weight;
int value;
Item(String name, int weight, int value) {
this.name = name;
this.weight = weight;
this.value = value;
}
}
static int backpack(Item[] items, int len, int packCapacity) {
int[][] dp = new int[len + 1][packCapacity + 1];
for (int i = 0; i <= len; ++i) {
for (int j = 0; j <= packCapacity; ++j) {
if (i == 0 || j == 0) {
dp[i][j] = 0;
} else {
dp[i][j] = -1;
}
}
}
for (int i = 1; i <= len; ++i) {
for (int j = 1; j <= packCapacity; ++j) {
if (items[i - 1].weight <= j) {
dp[i][j] = Math.max(dp[i - 1][j], items[i - 1].value + dp[i - 1][j - items[i - 1].weight]);
} else {
dp[i][j] = dp[i - 1][j];
}
}
}
return dp[len][packCapacity];
}
public static void main(String[] args) {
Item[] items = {new Item("吉他",1,1500),new Item("音响",4,3000),new Item("电脑",3,2000),new Item("手机",1,2000)};
int itemCount = items.length;
int packCapacity = 4;
int result = backpack(items, itemCount, packCapacity);
System.out.println("20052266 杨煜聪");
System.out.println("最大的结果是:" + result);
}
}