http://poj.org/problem?id=1384
#include<cstdio>
#include<cstring>
#include<iostream>
using namespace std;
int p[510];
int w[510];
int dp[10010];
int min(int a,int b){
return a<b?a:b;
}
int main(){
int T;
scanf("%d",&T);
int E,F,n;
int V;
while(T--){
scanf("%d%d",&E,&F);
V = F-E;
scanf("%d",&n);
for(int i=0;i<n;i++){
scanf("%d%d",&p[i],&w[i]);
}
dp[0]=0;
for(int i=1;i<=V;i++){
dp[i] = 100000000;
}
for(int i=0;i<n;i++){
for(int j=0;j<=V;j++){
if(j>=w[i]){
dp[j]=min(dp[j],dp[j-w[i]]+p[i]);
}
}
}
if(dp[V]==100000000){
cout<<"This is impossible."<<endl;
}
else{
cout<<"The minimum amount of money in the piggy-bank is ";
printf("%d",dp[V]); //第一次代码的时候在这里加入了一个&符号,导致输出一直错误,应该细心一点
cout<<"."<<endl;
}
}
}