poj1384
来源:互联网 发布:c语言如何清屏 编辑:程序博客网 时间:2024/06/10 14:41
#include<iostream>#include<stdio.h>#include<string.h>#include<cmath>#include<algorithm>using namespace std;int w[10010];int p[10010];int main(){ int ca,n,weight,value,i,j,m; scanf("%d",&ca); while(ca--) { scanf("%d%d",&weight,&value); m=value-weight; scanf("%d",&n); memset(w,0,sizeof(w)); memset(p,0,sizeof(p)); while(n--) { scanf("%d%d",&value,&weight); for(i=weight;i<=m;i++) { if(w[i]<w[i-weight]+weight) { w[i]=w[i-weight]+weight; p[i]=p[i-weight]+value; } else if(w[i]==w[i-weight]+weight) { p[i]=min(p[i],p[i-weight]+value); } } } if(w[m]==m) printf("The minimum amount of money in the piggy-bank is %d.\n",p[m]); else printf("This is impossible.\n"); }}