package algorithm;
/**
* @author taoke
* @desc 动态规划算法(01背包问题)
* @email 1504806660@qq.com
* @date 2022/1/21
*/
public class PackageProblem {
public static void main(String[] args) {
//物品重量
int[] w = {1, 4, 3};
//物品价格
int[] v = {1500, 3000, 2000};
//背包总容量
int t = 4;
//物品数量
int n = v.length;
//动态规划表
int[][] dp = new int[n + 1][t + 1];
for (int i = 1; i <= n; i++) {
for (int j = 1; j <= t; j++) {
//背包装不下
if (j < w[i - 1]) {
dp[i][j] = dp[i - 1][j];
} else {//背包装得下
dp[i][j] = Math.max(dp[i - 1][j], v[i - 1] + dp[i - 1][j - w[i - 1]]);
}
}
}
//打印背包情况
for (int i = 0; i < n + 1; i++) {
for (int j = 0; j < t + 1; j++) {
System.out.print(dp[i][j] + " ");
}
System.out.println();
}
}
}
常用的十大算法-动态规划(背包问题)
最新推荐文章于 2022-03-28 20:19:56 发布