初写博客,如有欠佳之处还望大家海涵,下面评论提出及时改正
动态规划-背包问题(给定容量获得最大的价值量) ,相比上一篇的解题方法,该解题方法占用空间更大,代码量也比较多
思路:
1. 定义一个int[][]类型的数组,数组行数为两行,列数为输入(max_value)的最大容量,用于存贮当前状态和前一状态,以遍历的物品所在位置的奇偶区分
2. 遍历每个物品,每个物品只有放入和不放入两个状态,定义一变量表示当前的容量,如果当前容量小于物品所需要的容量,则直接把上一状态该容量的值直接赋给该容量的当前状态
3. 奇数状态存在二位数组的第0行,偶数存在第1行,后面的值相应的覆盖对应的行
4. 二维数组的最后一行的值就是容量值为1-(max_value)对应的最大价值量,最后一个元素就是所要求的结果
public class Test {
public static void main(String[] args) {
Scanner input = new Scanner(System.in);
//the variable be used to save the max volume value
int max_volume = input.nextInt();
//the variable be used to save the good's kind
int good_kind = input.nextInt();
//the array be used to save every current bag's currently statue and forward statue
int[][] numValue = new int[2][max_volume];
//the array be