动态规划-背包问题(给定容量获得最大的价值量)2

这篇博客探讨了如何使用动态规划解决背包问题,旨在在给定的容量下获得最大的价值。通过定义一个二维数组存储状态,遍历每个物品并判断是否放入背包,根据物品位置的奇偶性更新数组,最终得到最大价值量。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

初写博客,如有欠佳之处还望大家海涵,下面评论提出及时改正
动态规划-背包问题(给定容量获得最大的价值量) ,相比上一篇的解题方法,该解题方法占用空间更大,代码量也比较多
思路:
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 used to sa
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值