HDU 1114 Piggy-Bank
完全背包问题,不会可以再看一遍背包九讲
#include <stdio.h>
#include <string.h>
#include <iostream>
using namespace std;
#define inf 500000000
int min(int a, int b)
{
return a<b?a:b;
}
int main()
{
int t;
long int f[10010],p[10010],w[10010];
scanf("%d",&t);
while(t--)
{
int E,F,n,i,j,v;
scanf("%d %d", &E, &F);
v = F - E;
scanf("%d", &n);
for(i=1;i<=v;i++)
f[i] = inf;
f[0] = 0;
for(i=1;i<=n;i++)
scanf("%ld %ld", &p[i], &w[i]);
for(i=1;i<=n;i++)
for(j=w[i];j<=v;j++)
f[j] = min(f[j],f[j-w[i]]+p[i]);
if(f[v]==inf)
printf("This is impossible.\n");
else
printf("The minimum amount of money in the piggy-bank is %ld.\n",f[v]);
}
return 0;
}