hdu 1114 Piggy-Bank

http://acm.hdu.edu.cn/showproblem.php?pid=1114 背包

View Code
 1 #include<iostream>
2 #include<cstdio>
3 #include<cstring>
4 #include<cmath>
5 using namespace std;
6 #define INF 99999999
7 struct node
8 {
9 int w;
10 int v;
11 };
12 node a[508];
13 int dp[10008];
14 int n,sum;
15 void solve()//n为个数,sum为money的总重量
16 {
17 int i,j;
18 for(i=0;i<=sum;i++) dp[i]=INF;
19
20 dp[0]=0;
21 for(i=1;i<=n;i++)
22 {
23 for(j=a[i].w;j<=sum;j++)
24 {
25 dp[j]=min(dp[j],dp[j-a[i].w]+a[i].v);
26 }
27 }
28 if(dp[sum]!=INF)
29 printf("The minimum amount of money in the piggy-bank is %d.\n",dp[sum]);
30 else
31 printf("This is impossible.\n");
32 }
33 int main()
34 {
35 int t,i,j,w1,w2;
36 scanf("%d",&t);
37 while(t--)
38 {
39 scanf("%d%d%d",&w1,&w2,&n);
40 sum=w2-w1;
41 for(i=1;i<=n;i++) scanf("%d%d",&a[i].v,&a[i].w);
42 solve();
43 }
44 return 0;
45 }


 

posted @ 2012-04-01 12:44  keepmoving89  阅读(117)  评论(0编辑  收藏  举报