题意:直接说数据,735是目标值,然后3是后面有三种钱币,四张125的,六张五块的和三张350的。

思路:能够轻易的看出这是一个多重背包问题,735是背包的容量,那些钱币是物品,而且有一定的数量,是多种背包。但是做的时候总是超时。可能是因为m和n太大。然后可以通过二进制把它转化为01背包,因为将钱币的数量化为二进制,1   2    4直到数量减一。化成的二进制数字排列组合,可以组成任意钱币数量内的数字。

看代码:

//二进制优化  多重背包转化为01背包
#include<stdio.h>
int main()
{
int cash,s[100010],n;
int dp[100010];
while(~scanf("%d%d",&cash,&n))
{
for(int i=0;i<=cash;i++)
dp[i]=0;
int k=0,a,b;
for(int i=0;i<n;i++)
{
scanf("%d%d",&a,&b);//4 125
int t=1;
while(t<a)//转化为1*125 2*125 的背包
{
s[k++]=t*b;
a=a-t;
t*=2;
}
if(a)
s[k++]=a*b;//1*125剩余的背包
} for(int i=0;i<k;i++)
{
for(int j=cash;j>=s[i];j--)
{
dp[j]=dp[j]>dp[j-s[i]]+s[i]?dp[j]:dp[j-s[i]]+s[i];
}
}
printf("%d\n",dp[cash]);
}
return 0;
}

最新文章

  1. javascript的变量声明提升
  2. Node Server管理
  3. GZFramwork快速开发框架演练之会员系统(四)添加商品管理
  4. 基于反射的通过set方法的依赖注入,可以看成一种设计模式,自己来用
  5. ylbtech-Bill(发票管理)-数据库设计
  6. 图片 文字 input等垂直居中对齐
  7. Game start
  8. pdf打印乱码问题
  9. webpack3_脚手架
  10. MySQL数据库——表操作
  11. kubernetes 安装手册(成功版)
  12. 4、Zookeeper简单介绍
  13. 【原】为DevExpress的ChartControl添加Y轴控制 和 GridControl中指定列添加超级链接
  14. CSS 基础 例子 行高line-height
  15. jquery批量控制表单元素
  16. Unity发布安卓Splash Image适应手机、平板
  17. [转] Google 开源 iOS 应用测试工具:EarlGrey
  18. 《Flink 源码解析》—— 源码编译运行
  19. 不同级域名中的 Cookie 共享
  20. JavaScript 中的命名空间

热门文章

  1. FormsAuthenticationTicket身份验证通过后无法登陆---可能存在的问题
  2. pip install mysqlclient报错(OSError: mysql_config not found)
  3. Golang 使用Protocol Buffer 案例
  4. Vue 项目分环境打包
  5. Nginx server name配置子域名二级域名
  6. 超详细的HDFS读写流程详解(最容易理解的方式)
  7. go学习第四天、条件和循环
  8. 推荐一个学习python非常好的网站
  9. Redis集群搭建及选举原理
  10. js函数的三种成创建方式以及它们各自的不同