0-1背包问题是很经典的算法问题:给定n种物品和一背包。物品i的重量是wi,价值是vi,背包最大容量是C。应该如何选择装入背包的物品,使得装入背包中物品的总价值最大?java代码
时间: 2023-10-02 08:12:15 浏览: 88
0-1背包问题.java给定背包的容量c,物品数量n、物品重量的集合w[n]和物品价值的集合v[n]; 2... 设有n种物品,
5星 · 资源好评率100%
以下是Java代码实现0-1背包问题的动态规划算法:
```java
public class Knapsack01 {
public int knapsack(int[] w, int[] v, int C) {
int n = w.length;
int[][] dp = new int[n+1][C+1];
for (int i = 1; i <= n; i++) {
for (int j = 1; j <= C; j++) {
if (j < w[i-1]) {
dp[i][j] = dp[i-1][j];
} else {
dp[i][j] = Math.max(dp[i-1][j], dp[i-1][j-w[i-1]] + v[i-1]);
}
}
}
return dp[n][C];
}
}
```
其中,w数组表示物品的重量,v数组表示物品的价值,C表示背包的容量。该算法的时间复杂度为O(nC),空间复杂度为O(nC)。
阅读全文