一、简介:
下面是算法的介绍:
先看一个实例:背包问题
二、实例图解:![在这里插入图片描述](https://i-blog.csdnimg.cn/blog_migrate/a499ea2d19dd1b493e4e7545c6f41bad.png)
三、代码
1、首先设置基础属性,并将表初始化。
2、核心代码:
输出:
3、完整代码:
package com.huey.dynamic;
public class KnapsackProblem {
public static void main(String[] args) {
int[] w = {
1, 4, 3 };// 物品的重量
int[] val = {
1500, 3000, 2000 };// 物品的价值 这里的val[i] 就是前面讲的v[i]
int m = 4;// 背包的容量
int n = val.length;// 物品的个数
// 创建二维数组,表
// v[i][j] 表示在前i 个物品中,能够装入容量为j 的背包中的最大价值
int[][] v = new int[n + 1][m + 1];
// 初始化第一行和第一列,在本程序中,可以不去处理,因为默认就是0
for (int i = 0; i < v.length; i++) {
v[i][0] = 0;// 将第一列设置为0
}
for (int i = 0; i < v[0].length; i++) {
v[0]