package demo27;
//动态规划算法
public class Dongtai {
public static void main(String[] args) {
int[] w = {1, 4, 3};//表示物体重量
int[] val = {1500, 3000, 2000};//表示物体价值
int n = val.length;//表示物体数量
int m = 4;//定义背包重量
//构建一个二维数组模拟填表
int[][] v = new int[n + 1][m + 1];
//初始化数组
for (int i = 0; i < n + 1; i++) {
for (int j = 0 ; j < m + 1;j ++){
v[i][j] = 0;
}
}
//填入数组
for (int i = 1; i < n + 1; i++) {
for (int j = 1; j < m + 1;j++){
if (w[i - 1] > j) {
v[i][j] = v[i - 1][j];
} else{
v[i][j] = max(v[i - 1][j], val[i - 1] + v[i - 1][j - w[i - 1]]);
}
}
}
//输出数组测试
for (int i = 0; i < n + 1; i++) {
for (int j = 0; j < m + 1; j++) {
System.out.print(v[i][j] + " ");
}
System.out.println();
}
}
public static int max(int a, int b) {
if (a > b) {
return a;
}
return b;
}
}
动态规划算法-背包问题
最新推荐文章于 2024-09-25 13:54:13 发布