hdu1114 Piggy-Bank (完全背包)

#include <stdio.h>  
#include <string.h>
#define INF 10000000
#define MAXN 10002  

int dp[MAXN];  

int main()
{
	int n,E,F,W,i,j,test;
	int w[502],val[502]; 
	scanf("%d",&test);
	while(test--)
	{
		scanf("%d %d",&E,&F);
		W=F-E;
		scanf("%d",&n);
		for(i=0;i<n;++i)
			scanf("%d %d",&val[i],&w[i]);
		for(i=1;i<MAXN;++i)
			dp[i]=INF;
		dp[0]=0;//注意初始化
		for(i=0;i<n;++i)
		{
			for(j=w[i];j<=W;++j)
				if(dp[j]>dp[j-w[i]]+val[i])
					dp[j]=dp[j-w[i]]+val[i];
		}
		if(dp[W]<INF)
			printf("The minimum amount of money in the piggy-bank is %d.\n",dp[W]);
		else
			printf("This is impossible.\n");
	}
	return 0;
}

你可能感兴趣的:(hdu1114 Piggy-Bank (完全背包))