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
  • 相关阅读:
    vim 真是上瘾啊
    乐此不疲
    .vimrc .bashrc
    github
    隐藏c语言烦人的{ }
    linux mint console-setup
    samsung n143 brightness on linux mint
    荒漠甘泉——1月31日
    嵌入式 方向?
    python2与python3的区别
  • 原文地址:https://www.cnblogs.com/zfc888/p/10179378.html
Copyright © 2011-2022 走看看