poj 1384 && hdu 1114 Piggy-Bank (完全背包)

来源:互联网 发布:python安装socket库 编辑:程序博客网 时间:2024/05/17 20:33

题目链接:http://poj.org/problem?id=1384

解题报告:题目要求背包容量一定,把背包装满时背包的价值最小。

                 由于每一件物品的数量是无限的,所以是完全背包问题。

                  题目要求价值最小,所以我们在初始化的时候,应该初始化最大值,由于在背包容量为0的时候,价值是0。

code:

#include<cstdio>#include<cstring>#include<algorithm>using namespace std;const int INF = 0x3fffffff;int val[505],w[505],dp[10005];int main(){int T,s,e,v,n;scanf("%d",&T);while(T--){scanf("%d%d",&s,&e);v=e-s;for(int i=0;i<=v;i++)dp[i]=INF;dp[0]=0;scanf("%d",&n);for(int i=1;i<=n;i++)scanf("%d%d",&val[i],&w[i]);for(int i=1;i<=n;i++)for(int j=1;j<=v;j++)if(j>=w[i])dp[j] = min(dp[j],dp[j-w[i]]+val[i]);if(dp[v]!=INF) printf("The minimum amount of money in the piggy-bank is %d.\n",dp[v]);else printf("This is impossible.\n");}return 0;} 


 

原创粉丝点击