0-1背包问题java代码
时间: 2023-10-14 13:27:38 浏览: 30
以下是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`。该方法返回背包中的最大价值。
相关推荐
![rar](https://img-home.csdnimg.cn/images/20210720083606.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)