博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
POJ 1742
阅读量:6869 次
发布时间:2019-06-26

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

  这是一道可以用多重背包来写的题,但是这种方法速度很慢,2829MS。思路很简单,将多重背包转化为01背包,dp所对应的下标为钱数,如果能刚好凑到下标所对应的钱数,就赋为1。最后输出被赋为1的个数就是可能性。

#include
#include
#define MAX_PRICE 1000000#define MAX_COIN 110void mk_list(int,int,int);int top=1,stk[MAX_PRICE];int main(){ int n,m; while(scanf("%d%d",&n,&m)!=EOF&&!(n==0&&m==0)) { int i,j,val[MAX_COIN],amnt[MAX_COIN],dp[MAX_PRICE]; for(i=1;i<=n;i++) { scanf("%d",&val[i]); } for(i=1;i<=n;i++) { scanf("%d",&amnt[i]); } for(i=1,top=1;i<=n;i++) { mk_list(val[i],amnt[i],m); } for(i=1;i<=m;i++) dp[i]=0; dp[0]=1; int ans=0; for(i=1;i
=stk[i];j--) { if(!dp[j]&&dp[j-stk[i]]==1) { dp[j]=1; ans++; } } } printf("%d\n",ans); } return 0;}void mk_list(int val,int amnt,int m){ int k=1; while(k
<=m) { stk[top++]=k*val; amnt-=k; k=k*2; } if(val*amnt<=m) { stk[top++]=val*amnt; }}

转载于:https://www.cnblogs.com/coredux/archive/2012/07/30/2616095.html

你可能感兴趣的文章
间谍卫星的基础?YOLT——利用卷积神经网络对卫星影像进行多尺度目标检测(Part I)...
查看>>
jstl_开发第一个标签
查看>>
程序员哇,你想在下个情人节或者520脱单么?这个秘籍不能错过
查看>>
去不去O,谁说了算?
查看>>
PHP防SQL注入和XSS攻击
查看>>
在SHAREPOINT共享文档库中启用版本控制功能。
查看>>
Http 代理工具 实战 支持网页与QQ代理
查看>>
又见尾递归
查看>>
安装PyGraphics
查看>>
【COCOS2DX-LUA 脚本开发之四】使用TOLUA++编译PKG,从而创建自定义类让LUA脚本使用...
查看>>
开源大数据周刊-第16期
查看>>
遥感图像分类现状及存在的问题
查看>>
Commons Logging存在的ClassLoader问题详解
查看>>
双向链表的操作
查看>>
Flume-ng 高级功能配置
查看>>
我的友情链接
查看>>
CRM技术发展历程
查看>>
编译安装LAMP(php-fpm)步骤详解
查看>>
2-Ceph运维
查看>>
深入浅出Linux设备驱动编程--定时器
查看>>