01背包问题的JAVA代码以及注释
时间: 2023-05-11 13:02:37 浏览: 89
01背包问题的代码
以下是01背包问题的JAVA代码以及注释:
/**
* 01背包问题的JAVA代码
*
* @param W 背包的容量
* @param wt 物品的重量数组
* @param val 物品的价值数组
* @param n 物品的数量
* @return 背包能够装下的最大价值
*/
public static int knapSack(int W, int wt[], int val[], int n) {
int i, w;
int K[][] = new int[n + 1][W + 1];
// 填充K[][]表格,K[i][w]表示前i个物品,容量为w的背包能够装下的最大价值
for (i = 0; i <= n; i++) {
for (w = 0; w <= W; w++) {
if (i == 0 || w == 0)
K[i][w] = 0;
else if (wt[i - 1] <= w)
K[i][w] = Math.max(val[i - 1] + K[i - 1][w - wt[i - 1]], K[i - 1][w]);
else
K[i][w] = K[i - 1][w];
}
}
return K[n][W];
}
注释中解释了每个参数的含义,以及代码中的K[][]表格表示的意义。
阅读全文