博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
POJ 1276 完全背包
阅读量:5125 次
发布时间:2019-06-13

本文共 1032 字,大约阅读时间需要 3 分钟。

Sample Input

735 3  4 125  6 5  3 350633 4  500 30  6 100  1 5  0 1735 00 3  10 100  10 50  10 10

Sample Output

73563000 题意:你的银行卡里有 cash 元,而ATM机里有 n 种面值的钱,n行每种钱的数量和面值。   问 最多能从这台ATM机里取出多少钱。 裸的完全背包 可是我居然写错了。。。。 在当前物品的数量*价值 大于等于 背包容量时,就可以将当前物品的数量视作无限,for循环的时候就从小到大正序遍历。  小于等于的时候 就将物品数量转换成二进制下的01背包 这里是01背包!!!
#include
#include
#include
using namespace std;int cash, n;int c[15],w[15];int dp[100005];void CompletePack(int c,int w){ if(c*w>=cash){ // 完全背包 for(int j=w;j<=cash;j++) dp[j] = max(dp[j],dp[j-w]+w); }else { // 多次01背包 int k = 1; while(k
=w*k;j--) dp[j] = max(dp[j],dp[j-w*k]+w*k); c -= k; k <<= 1; } for(int j=cash;j>=w*c;j--) dp[j] = max(dp[j],dp[j-w*c]+w*c); }}int main(){ while(scanf("%d%d",&cash,&n)!=EOF){ memset(dp,0,sizeof(dp)); for(int i=0;i
View Code

 

 

转载于:https://www.cnblogs.com/kongbb/p/10939431.html

你可能感兴趣的文章
Solaris11修改主机名
查看>>
latex for wordpress(一)
查看>>
如何在maven工程中加载oracle驱动
查看>>
Flask 系列之 SQLAlchemy
查看>>
aboutMe
查看>>
【Debug】IAR在线调试时报错,Warning: Stack pointer is setup to incorrect alignmentStack,芯片使用STM32F103ZET6...
查看>>
一句话说清分布式锁,进程锁,线程锁
查看>>
FastDFS使用
查看>>
服务器解析请求的基本原理
查看>>
[HDU3683 Gomoku]
查看>>
下一代操作系统与软件
查看>>
【iOS越狱开发】如何将应用打包成.ipa文件
查看>>
[NOIP2013提高组] CODEVS 3287 火车运输(MST+LCA)
查看>>
Yii2 Lesson - 03 Forms in Yii
查看>>
Python IO模型
查看>>
DataGridView的行的字体颜色变化
查看>>
如何处理Win10电脑黑屏后出现代码0xc0000225的错误?
查看>>
局域网内手机访问电脑网站注意几点
查看>>
[Serializable]的应用--注册码的生成,加密和验证
查看>>
Linux操作系统 和 Windows操作系统 的区别
查看>>