0-1背包问题java代码
时间: 2023-10-14 22:27:38 浏览: 85
0-1背包问题(java实现代码)
以下是0-1背包问题的Java代码:
```
public class Knapsack {
// 返回0-1背包的最大价值
public static int knapsack(int W, int[] wt, int[] val, int n) {
int[][] dp = new int[n + 1][W + 1];
// 填充dp数组
for (int i = 1; i <= n; i++) {
for (int j = 1; j <= W; j++) {
if (wt[i - 1] > j) {
dp[i][j] = dp[i - 1][j];
} else {
dp[i][j] = Math.max(dp[i - 1][j], val[i - 1] + dp[i - 1][j - wt[i - 1]]);
}
}
}
return dp[n][W];
}
public static void main(String[] args) {
int[] val = { 60, 100, 120 };
int[] wt = { 10, 20, 30 };
int W = 50;
int n = val.length;
System.out.println(knapsack(W, wt, val, n));
}
}
```
在这个例子中,我们有三个物品,分别有对应的重量和价值。我们要将这些物品放入一个容量为50的背包中,使得背包中的物品价值最大化。`knapsack`方法接受四个参数:背包容量`W`、每个物品的重量`wt`、每个物品的价值`val`和物品数量`n`。该方法返回背包中的最大价值。
阅读全文