http://poj.org/problem?id=1384
恰好装满的最小价值~
#include <stdio.h>
#include <string.h>
const int INF = 1000000000;
int f[10010];
int main()
{
int E, F, W, T, n, p, w,i , j;
scanf("%d\n",&T);
while(T--)
{
scanf("%d%d",&E,&F); W = F - E;
scanf("%d",&n);
for(i=1; i<=W; i++) f[i] = INF;
f[0] = 0;
for(i=0; i<n; i++)
{
scanf("%d%d",&p, &w);
for(j=w; j<=W; j++)
if(f[j]>f[j-w]+p)
f[j] = f[j-w]+p;
}
if(f[W]!=INF)
printf("The minimum amount of money in the piggy-bank is %d.\n",f[W]);
else
printf("This is impossible.\n");
}
return 0;
}