【动态规划】完全背包:存钱罐(恰好装满)
背包恰好装满问题:
设有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;}}
【动态规划】完全背包:存钱罐(恰好装满)相关推荐
- 01背包及其变种(物品无限背包、恰好装满背包)
一.01背包问题 01背包是在M件物品取出若干件放在空间为W的背包里,每件物品的体积为C1,C2,-,Cn,与之相对应的价值为W1,W2,-,Wn.求解将那些物品装入背包可使总价值最大. 动态规划: ...
- 变种 背包问题_01背包及其变种(物品无限背包、恰好装满背包)
一.01背包问题 01背包是在M件物品取出若干件放在空间为W的背包里,每件物品的体积为C1,C2,-,Cn,与之相对应的价值为W1,W2,-,Wn.求解将那些物品装入背包可使总价值最大. 动态规划: ...
- 01背包问题、完全背包、多重背包、恰好装满
01背包问题:最基本的背包问题,每个物品最多只能放一次. 完全背包问题:每种物品可以放无限多次. 多重背包问题:每种物品有一个固定的次数上限. [代码] import java.util.Scanne ...
- 01背包,恰好装满(劲歌金曲,uva 12563)
关于不一定装满与恰好装满: http://blog.sina.com.cn/s/blog_150cffdab0102w0g9.html 参考代码:http://blog.csdn.net/acvay/ ...
- <动态规划>完全背包(最大价值,恰好装满最大价值)
完全背包_牛客题霸_牛客网 (nowcoder.com) (10条消息) 01背包 完全背包是否恰好装满问题_Simple的博客-CSDN博客 public ArrayList<Integer& ...
- 01背包的变形问题----背包恰好装满
01背包的变形问题----背包恰好装满 在看本文之前建议先看一下我之前发过的01背包详解. https://blog.csdn.net/Iseno_V/article/details/10000113 ...
- “恰好装满求最值”背包问题的初始化解析
[问题描述] 不同于普通的没有"恰好装满"约束的背包问题,有时我们会遇到"恰好装满求最值"的背包问题.怎么求解? 其实,也很简单,只需要对普通的没有" ...
- Python3使用动态规划处理背包问题:完全背包(含背包恰好装满的情况)
文章目录 题目介绍 题解1 题解2 题解3 完全背包问题是基于01背包的,如果对01背包问题不熟悉,可以参考: Python3使用动态规划处理01背包问题 题目介绍 原题链接:NC309 完全背包 描 ...
- 【动态规划笔记】动态规划初始化细节问题:恰好装满背包
求最优解的背包问题中,有的题目要求[恰好装满背包],有的题目并[没有要求]必须把背包装满 实现方法: 初始化有所不同 设:F[i]表示容量为i的背包能够装的最大价值 恰好装满背包: 初始化: F ...
最新文章
- WebSocket协议分析
- aesecbpkcs5 php_php AES/ECB/PKCS5Padding加密
- cola-ui的使用
- linux dd命令参数及用法详解---用指定大小的块拷贝一个文件
- msfvenom生成木马和内网穿透
- Level up - single parent navigation
- GMQ交易平台大力探索区块链技术,进一步推动产业繁荣
- linux php和java环境变量配置_java_linux配置java环境变量详细过程,直接上实现过程:
一. 解压安 - phpStudy...
- 从Clarifai的估值聊聊深度学习
- Linux基础命令与进阶
- java实现高性能的数据同步
- 如何利用百度音乐播放器的API接口来获取高音质歌曲
- STM32固件升级之 hypertrm(超级终端)使用(三)
- TextView控件的使用(KongJian)
- JPress安装体验
- 手机里舍不得删除的48条搞笑短信
- 仿照elementUI编写自己的表单组件
- 微信小程序获取今日天气预报api 免费接口
- 程序猿健身之腹肌~基本版本
- 【数字化】数字化工厂的框架与落地实践;50张图解读数字化制造