HDU1114 Piggy-Bank (完全背包)

完全背包模板,和01背包相比不用倒推,因为一种可以选多个。

这道题求最小,dp数组初始化为无穷即可。

复制代码
 1 #include<iostream>
 2 #include<cstring>
 3 #include<algorithm>
 4 using namespace std;
 5 const int M=10005;
 6 const int INF=0x3f3f3f;
 7 int dp[M];//dp[j]表示放入重量为j的存钱罐面值之和最小值 
 8 int val[M],w[M];//val[i]表示第i种硬币的面值,w[i]表示第i种硬币的重量 
 9 
10 int main(){
11     int t,E,F,W,N;
12     cin>>t;
13     while(t--){
14         cin>>E>>F;
15         W=F-E;
16         cin>>N;
17         for(int i=0;i<N;i++) cin>>val[i]>>w[i];
18         memset(dp,0x3f,sizeof(dp));
19         dp[0]=0;
20         for(int i=0;i<N;i++)//完全背包 
21             for(int j=w[i];j<=W;j++)
22                 dp[j]=min(dp[j],dp[j-w[i]]+val[i]);
23         if(dp[W]<INF)
24             cout<<"The minimum amount of money in the piggy-bank is "<<dp[W]<<"."<<endl;
25         else
26             cout<<"This is impossible."<<endl;
27     }
28     return 0;
29 }
复制代码

 



如果您觉得阅读本文对您有帮助,请点一下“推荐”按钮,您的“推荐”将是我最大的写作动力!欢迎各位转载,但是未经作者本人同意,转载文章之后必须在文章页面明显位置给出作者和原文连接,否则保留追究法律责任的权利。
posted @   YHXo  阅读(57)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 25岁的心里话
· 按钮权限的设计及实现
点击右上角即可分享
微信分享提示