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