背包恰好装满问题:

设有n个物品,其重量(或占用空间)分别为w1, W.,...Wn.价值分别为V1,2....n. ←
给定一个总容量为W的背包,每个物品只能整个放入背包或不放。←
问:如何选择放入背包的物品,使得背包中的物品的总重恰好为W的同时,总价值最大/小?

背包恰好装满问题和普通01背包相同,只是初始化不同+最后判断是否能装满

dp[i][j]:前i个物品恰好装满j的最值

初始化问题:

恰好装满求最小值:dp->inf,dp[0]=0

恰好装满求最大值:dp->-inf,dp[0]=0

理解:

(1)初始化是指在没有任何物品放入背包的合法状态。

①容量为0的背包可以在什么也不装的情况下恰好被装满,价值为0,所以dp[0]=0

②容量不为0的背包在什么也不装的情况下不可能被装满,属于未定义的状态,所以应该被赋无穷

(2)当前的合法解,一定是之前的合法状态推导得到,如果循环结束后,dp[m]还是inf,说明没有合法的状态能够推导到m,说明不能从n个数中选若干个装满m

代码:

void input()
{cin>>e>>f;cin>>n;for(int i=1;i<=n;i++){cin>>p[i]>>w[i];}
}
int main()
{input();memset(dp,inf,sizeof(dp));dp[0]=0;int v=f-e;for(int i=1;i<=n;i++){for(int j=w[i];j<=v;j++){dp[j]=min(dp[j],dp[j-w[i]]+p[i]);}}if(dp[v]==inf){cout<<"impossible"<<endl;}else{cout<<dp[v]<<endl;}}

【动态规划】完全背包:存钱罐(恰好装满)相关推荐

  1. 01背包及其变种(物品无限背包、恰好装满背包)

    一.01背包问题 01背包是在M件物品取出若干件放在空间为W的背包里,每件物品的体积为C1,C2,-,Cn,与之相对应的价值为W1,W2,-,Wn.求解将那些物品装入背包可使总价值最大. 动态规划: ...

  2. 变种 背包问题_01背包及其变种(物品无限背包、恰好装满背包)

    一.01背包问题 01背包是在M件物品取出若干件放在空间为W的背包里,每件物品的体积为C1,C2,-,Cn,与之相对应的价值为W1,W2,-,Wn.求解将那些物品装入背包可使总价值最大. 动态规划: ...

  3. 01背包问题、完全背包、多重背包、恰好装满

    01背包问题:最基本的背包问题,每个物品最多只能放一次. 完全背包问题:每种物品可以放无限多次. 多重背包问题:每种物品有一个固定的次数上限. [代码] import java.util.Scanne ...

  4. 01背包,恰好装满(劲歌金曲,uva 12563)

    关于不一定装满与恰好装满: http://blog.sina.com.cn/s/blog_150cffdab0102w0g9.html 参考代码:http://blog.csdn.net/acvay/ ...

  5. <动态规划>完全背包(最大价值,恰好装满最大价值)

    完全背包_牛客题霸_牛客网 (nowcoder.com) (10条消息) 01背包 完全背包是否恰好装满问题_Simple的博客-CSDN博客 public ArrayList<Integer& ...

  6. 01背包的变形问题----背包恰好装满

    01背包的变形问题----背包恰好装满 在看本文之前建议先看一下我之前发过的01背包详解. https://blog.csdn.net/Iseno_V/article/details/10000113 ...

  7. “恰好装满求最值”背包问题的初始化解析

    [问题描述] 不同于普通的没有"恰好装满"约束的背包问题,有时我们会遇到"恰好装满求最值"的背包问题.怎么求解? 其实,也很简单,只需要对普通的没有" ...

  8. Python3使用动态规划处理背包问题:完全背包(含背包恰好装满的情况)

    文章目录 题目介绍 题解1 题解2 题解3 完全背包问题是基于01背包的,如果对01背包问题不熟悉,可以参考: Python3使用动态规划处理01背包问题 题目介绍 原题链接:NC309 完全背包 描 ...

  9. 【动态规划笔记】动态规划初始化细节问题:恰好装满背包

    求最优解的背包问题中,有的题目要求[恰好装满背包],有的题目并[没有要求]必须把背包装满 实现方法: 初始化有所不同 设:F[i]表示容量为i的背包能够装的最大价值 恰好装满背包: 初始化:    F ...

最新文章

  1. WebSocket协议分析
  2. aesecbpkcs5 php_php AES/ECB/PKCS5Padding加密
  3. cola-ui的使用
  4. linux dd命令参数及用法详解---用指定大小的块拷贝一个文件
  5. msfvenom生成木马和内网穿透
  6. Level up - single parent navigation
  7. GMQ交易平台大力探索区块链技术,进一步推动产业繁荣
  8. linux php和java环境变量配置_java_linux配置java环境变量详细过程,直接上实现过程: 一. 解压安 - phpStudy...
  9. 从Clarifai的估值聊聊深度学习
  10. Linux基础命令与进阶
  11. java实现高性能的数据同步
  12. 如何利用百度音乐播放器的API接口来获取高音质歌曲
  13. STM32固件升级之 hypertrm(超级终端)使用(三)
  14. TextView控件的使用(KongJian)
  15. JPress安装体验
  16. 手机里舍不得删除的48条搞笑短信
  17. 仿照elementUI编写自己的表单组件
  18. 微信小程序获取今日天气预报api 免费接口
  19. 程序猿健身之腹肌~基本版本
  20. 【数字化】数字化工厂的框架与落地实践;50张图解读数字化制造

热门文章

  1. ExtJs 4.1.1 文件结构解析
  2. 一道sql 的面试题
  3. HDU2050 折线分割平面【切割平面】
  4. 第二届太原理工大学程序设计新生赛预赛(公开赛)题解
  5. TYUT程序设计比赛2017回顾
  6. Bailian2679 整数的立方和【入门】
  7. Java 相关计数问题及其实现
  8. 写作的积累 —— 台词
  9. 趣学 C 语言(十二)—— 文件操作
  10. 【笔试/面试】—— 奇葩 C/C++ 语法题