美文网首页
背包问题-动态规划

背包问题-动态规划

作者: 进击的码农 | 来源:发表于2019-02-17 23:50 被阅读0次
题目:给定两个数组w和v, 两个数组长度相等, w[i]表示第i件商品的重量,v[i]表示第i件商品的价值。再给定一个整数bag, 要求你挑选商品的重量加起来一定不能超过bag, 返回满足这个条件下, 你能获得的最大价值。
思路一:递归版本

递归函数代表从第index位置开始满足条件时的最大价值,比如:process1(w,v,bag,index,cost)代表从index位置开始,返回满足条件的最大价值,cost代表目前商品的重量。

public static int process(int[] w, int[] v, int bag) {
        return process1(w,v,bag,0,0);
}

/**
*  递归函数代表从第index位置开始满足条件时的最大价值
*/
private static int process1(int[] w, int[] v, int bag, int index, int cost ) {
        if(cost > bag) return Integer.MIN_VALUE;
        if (index == w.length) return 0;
        return Math.max(process1(w, v, bag, index+1, cost), v[index] + process1(w, v, bag, index+1, cost+w[index]));
}

思路2:动态规划版本
根据递归函数可知,解空间只取决于index、cost两个变量,故dp数组是一个二维数组,根据basecase可以知道dp二维数组第index=w.length行的值均为0,根据递推式二维数组的二维表每一行依赖于后一行的数值,因此二维表可以从倒序填好,从而得到整个dp数组的值,二维表画个图更直观。(懒,省略。。)

    private static int process2(int[] w, int[] v, int bag) {
        int n = w.length;
        int[][] dp = new int[n+1][bag+1];
        for (int i=n-1;i>=0;i--) {
            for (int j=bag;j>=0;j--) {
                dp[i][j] = dp[i+1][j];
                if(w[i] + j<=bag) dp[i][j] = Math.max(dp[i][j], v[i]+dp[i+1][w[i]+j]);
            }
        }
        return dp[0][0];
    }

相关文章

  • 算法学习收藏

    动态规划问题 动态规划(最优子结构和重叠子问题的比较) 动态规划解决01背包问题 01背包问题 最优二叉查找树 《...

  • 初识动态规划

    0-1 背包问题 备忘录 动态规划-二维数组 动态规划-一维数组 0-1 背包问题升级版 回溯算法 动态规划-二维...

  • 2019-07-10 数据结构和算法(妙味杜鹏)

    八皇后 A *寻路 背包问题(动态规划方法) 背包问题(贪心算法)

  • 动态规划

    0-1背包问题 自己实现的0-1背包问题的动态规划解法,先贴上吧,动态规划原理解释有空再写。

  • 2022-02-19 动态规划高频题专题【1】

    动态规划基本类型 dp基础 背包问题 打家劫舍 股票问题 子序列问题 进阶动态规划 深入理解动态规划过程 定义dp...

  • 动态规划.背包问题

    动态规划 之 0-1背包问题 【背包问题】 现有n个物品,价值为`$$v_1,v_2....v_n$$ 重量为 现...

  • 动态规划 背包问题

    1.问题描述 有n个物体有重量和价值两个属性,一个能承重一定重量的背包。问怎么选择物体能实现背包里的价值最大化。 ...

  • 动态规划 背包问题

    本篇博文参考此博文,该博文PPT非常有助理解 问题描述:给定n种物品和一背包。物品i的重量是wi,其价值为vi,背...

  • 背包问题(动态规划)

    原理参见 屈婉玲老师 算法设计与分析 ORZ

  • 动态规划:背包问题

    动态规划,都可以画网格解决! 背包问题 假设你是个小偷,背着一个可装4 磅东西的背包。你可盗窃的商品有如下3 件:...

网友评论

      本文标题:背包问题-动态规划

      本文链接:https://www.haomeiwen.com/subject/pcnneqtx.html