美文网首页
背包问题DP解法-递推1

背包问题DP解法-递推1

作者: nafoahnaw | 来源:发表于2018-06-15 18:17 被阅读0次
/**
 * 有n个重量和价值分别为Wi,Vi的物品。
 * 从这些物品中挑选出总重量不超过W的物品,求所有有挑选方案中价值总和的最大值
 * DP递推解法
 * @author haofan.whf
 * @version $Id: Bag02.java, v 0.1 2018年06月15日 下午6:02 haofan.whf Exp $
 */
public class Bag02 {

    //物品数量
    int n = 4;

    //背包容量
    int W = 5;

    //物品重量
    int[] WArray = new int[]{2,1,3,2};

    //物品价值
    int[] VArray = new int[]{3,2,4,2};

    int[][] dp = new int[n+1][W+1];

    /**
     * dp[n][j] = 0
     *
     * if(j < WArray[i]){
     *     dp[i][j] = dp[i+1][j]
     * }else{
     *     dp[i][j] = max(dp[i+1][j], dp[i+1][j-WArray[i]]+VArray[i])
     * }
     */
    public void solution(){
        for(int i = n - 1; i >= 0; i--){
            for (int j = 0; j <= W; j++) {
                if(j < WArray[i]){
                    dp[i][j] = dp[i+1][j];
                }else{
                    dp[i][j] = Math.max(dp[i+1][j], dp[i+1][j-WArray[i]]+VArray[i]);
                }
            }
        }
        System.out.println(dp[0][5]);
    }

}

相关文章

  • 背包问题DP解法-递推1

  • 80. LeetCode.91. 解码方法

    标签: 动态规划 难度: 中等 题目描述 解法 此题的递推式跟LeetCode70.爬楼梯 一样: dp[i]...

  • dp背包问题

    1、说明 leetcode做了几十道动态规划的题目,大部分都是参考别人的解法进行解答,对动态规划的理解还是不到位,...

  • 递推DP

    A - 数字三角形题解:假设getMax(i,j)表示点(i,j)到底部的最长路径,那么getMax(i,j)=m...

  • DP小结

    DP种类 线性DP 区间DP 树形DP 背包DP01背包满背包完全背包(转成01背包) 例子:线性动规:拦截导弹,...

  • 动态规划

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

  • 2019-01-17 leetcode 221 题

    动态规划递推公式如下: 如果当前项的位置的元素为‘1’的话 dp[r][c]=math.min(dp[r-1][c...

  • 回顾DP背包问题

    动态规划三个重要性质: 最优子结构 重叠子问题 无后效性(在构造解空间时一定要考虑) 一. 0/1背包 问题描述 ...

  • 常用算法(2)--动态规划

    步骤1、定义dp数组2、找到递推公式3、确定初始条件和边界

  • LeetCode dp

    1578. 避免重复字母的最小删除成本 dp解法 非dp解法 (我的) (别人的)

网友评论

      本文标题:背包问题DP解法-递推1

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