博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
hdoj1114 Piggy-Bank(DP 完全背包)
阅读量:6432 次
发布时间:2019-06-23

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

题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1114

思路:

题目看着有些绕,其实就是完全背包的变形,需要注意的是这里求最小值,所以需要将dp数组初始化为inf,但要将dp[0]=0,这样才能将dp进行下去。还有就是dp处的双重循环的第二层循环应该从小到大遍历,因为这里的coin是种类,每一种可以使用无限次;若从大到小遍历就是每一种类只能使用一次,这个地方很重要,要慢慢体会,自己举个例子试试。详见代码:

1 #include
2 using namespace std; 3 4 const int inf=0x3f3f3f3f; 5 int T,e,f,v,n; 6 int p[505],w[505],dp[10005]; 7 8 int main(){ 9 scanf("%d",&T);10 while(T--){11 memset(dp,inf,sizeof(dp)); //求min,故初始化inf12 dp[0]=0;13 scanf("%d%d",&e,&f);14 v=f-e;15 scanf("%d",&n);16 for(int i=1;i<=n;i++)17 scanf("%d%d",&p[i],&w[i]);18 for(int i=1;i<=n;i++)19 for(int j=w[i];j<=v;j++) //这里的coin是种类,每种个数无限,应从小到大遍历20 if(dp[j]>dp[j-w[i]]+p[i])21 dp[j]=dp[j-w[i]]+p[i];22 if(dp[v]

 

转载于:https://www.cnblogs.com/FrankChen831X/p/10390971.html

你可能感兴趣的文章
思科rip、dhcp、vlan
查看>>
tomcat nginx默许的post大小限制
查看>>
OSI七层模型
查看>>
去除工程的.svn隐藏文件夹
查看>>
Python24 终端如何输出彩色字体
查看>>
XSS跨站脚本***
查看>>
linux 挂载光驱
查看>>
ASP.NET MVC Area操作
查看>>
CSS颜色代码大全
查看>>
LINQ之路10:LINQ to SQL 和 Entity Framework(下)
查看>>
circle area
查看>>
怎么改变按钮的图标
查看>>
当输入流和输出流同时作用一个文件
查看>>
MySQL关于表碎片整理OPTIMIZE TABLE操作
查看>>
FortiGate 0458版本bug
查看>>
后台post注入爆密码
查看>>
Java --- 多线程 面试题
查看>>
OA项目如何成功实施!
查看>>
FindMaxConsecutive.java
查看>>
面试官问:ZooKeeper 一致性协议 ZAB 原理
查看>>