zoukankan      html  css  js  c++  java
  • DP-背包问题

      1.0-1背包问题

      问题描述:有n件物品,每件商品的质量为w[i],价值为从c[i]。现有一个质量为V的背包,问如何选取物品放进背包,使得背包内物品的总价值最大。每种商品只有一件。

      分析1:令dp[i][v]表示前i件商品恰好装入容量为v的背包中所能获得的最大价值。那么,对于第i件商品而言,它可以放入或者不放入。如果放入的话,问题就转化为前i-1件商品恰好装入容量为v-w[i]的背包中,所能获得的最大价值,此时dp[i][v]=dp[i-1][v-w[i]]+c[i]。如果不放的话,问题就转化为前i-1件商品恰好装入容量为v的背包中所能获得的最大价值,此时dp[i][v]=dp[i-1][v]。所以转移方程为dp[i][v]=max(dp[i-1][v-w[i]]+c[i],dp[i-1][v]),边界dp[0][v]=0,所以枚举i从1到n,v从0到V。

      

    for(int i=1;i<=n;i++){
        for(int v=w[i];v<=V;v++){
            dp[i][v]=max(dp[i-1][v],dp[i-1][v-w[i]]+c[i])
        }
    }
    View Code
  • 相关阅读:
    css3hover效果
    相册集效果
    原生进度条
    原生放大镜效果
    字符串变数组
    原生弹幕模拟
    圣杯与双飞翼布局
    三级联动
    Redis 基础、高级特性与性能调优
    如何完美回答面试官问的Mybatis初始化原理!!!
  • 原文地址:https://www.cnblogs.com/zfc888/p/10179378.html
Copyright © 2011-2022 走看看