其他分享
首页 > 其他分享> > HDU1114 Piggy-Bank (完全背包)

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 }

 

标签:背包,val,Bank,int,cin,Piggy,include,dp,HDU1114
来源: https://www.cnblogs.com/yhxnoerror/p/16388255.html