码迷,mamicode.com
首页 > 其他好文 > 详细

动态规划-背包问题

时间:2020-01-05 22:04:55      阅读:98      评论:0      收藏:0      [点我收藏+]

标签:之间   terminal   min   lob   arm   www   bsp   blob   strong   

  1. 0-1背包
    • 题意: 给定一个具备一定承重的背包,给定n个物品,每个物品具备一定的价值,和重量,每个物品只能装一次,问最大能装多大价值的物品。
    • for(int i=0;i<n;i++){//考虑前i个物品
              for(int j=m;j>=0;j--){//考虑背包承重为j的时候
                  if(j>=w[i]){//如果物品能够放进背包
                      dp[j] = max(dp[j],dp[j-w[i]]+v[i]);//考虑放与不放的最大值
                  }
              }
          }
    • 例题 poj3624:Charm Bracelet   AC代码
  2. 完全背包
    • 题意: 给定一个具备一定承重的背包,给定n个物品,每个物品具备一定的价值,和重量,每个物品可以装任意次,问装满背包最大(小)能装多大价值的物品。
    • for(int i=0;i<n;i++){   //考虑前i个物品
                for(int j=0;j<=m;j++){//考虑背包称重为j 的时候
                  if(j>=w[i]){       //如果物品能够放进去
                      dp[j] = min(dp[j],dp[j-w[i]]+v[i]);
                  }
                }
            }
    • 例题 poj1384:Piggy-Bank   AC代码
  3. 多重背包
    • 题意:给定一个具备一定承重的背包,给定n个物品,每个物品具备一定的价值,和重量,每个物品能够装有限次,问最大能装多大价值的物品。
    • 通过进行拆分之后,利用0-1背包进行求解。任何数量k都可以拆解为(2^0,2^1,2^2, … 2^i,k-(2^0+2^1+…+2^i)。并且1-k之内的数字都能用上面的数字组合出来,例如6拆分成(1,2,3) 1-6之间的数字都能用上述三个数字组合出来,因此拆分之后可利用0-1背包求解
    • for(int i=0;i<m;i++){//拆分
          int temp = 1;
          int num,volumn,value;
          cin>>num>>volumn>>value;
          while(num-temp>0){
              g[cnt].volumn = temp*volumn;
              g[cnt].value = temp*value;
              cnt++;
              num = num - temp;
              temp = temp*2;
          }
              g[cnt].volumn = num*volumn;
              g[cnt].value = num*value;
              cnt++;
       }
       for(int i=0;i<cnt;i++){
           for(int j=v;j>=g[i].volumn;j--){
               dp[j] = max(dp[j],dp[j-g[i].volumn]+g[i].value);
           }
       }
    • 多重背包   AC代码
    • poj 2392:Space Elevator  AC代码
    • 百练:1742:Coins    AC代码

动态规划-背包问题

标签:之间   terminal   min   lob   arm   www   bsp   blob   strong   

原文地址:https://www.cnblogs.com/cyj1258/p/12153804.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!