动态规划算法01背包代码
时间: 2023-12-20 12:28:45 浏览: 72
动态规划算法是一种常用的算法思想,可以用来解决很多实际问题,其中01背包问题是动态规划算法的一个经典应用。下面是Java实现01背包问题的动态规划算法代码:
```
public class Knapsack {
public static int knapsack(int[] w, int[] v, int c) {
int n = w.length;
int[][] dp = new int[n][c + 1];
for (int j = 0; j <= c; j++) {
dp[0][j] = j >= w[0] ? v[0] : 0;
}
for (int i = 1; i < n; i++) {
for (int j = 0; j <= c; j++) {
dp[i][j] = dp[i - 1][j]; if (j >= w[i]) {
dp[i][j] = Math.max(dp[i][j], dp[i - 1][j - w[i]] + v[i]);
}
}
}
return dp[n - 1][c];
}
public static void main(String[] args) {
int[] w = {2, 3, 4, 5};
int[] v = {3, 4, 5, 6};
int c = 8;
System.out.println(knapsack(w, v, c));
}
}
```
其中,w数组表示物品的重量,v数组表示物品的价值,c表示背包的容量。dp[i][j]表示前i个物品放入容量为j的背包中所能获得的最大价值。在代码中,我们先初始化dp数组的第一行,然后从第二行开始,依次计算dp[i][j]的值,最后返回dp[n-1][c]即可。
阅读全文