hdu 1114 (背包变形)

http://acm.hdu.edu.cn/showproblem.php?pid=1114

#include<stdio.h>
#include<iostream>
using namespace std;
const int N=15000;
#define inf 999999
int val[N],c[N],dp[N];
int main()
{
    int t,e,f,i,j,n;
    scanf("%d",&t);
    while(t--)
    {
        scanf("%d%d",&e,&f);
        int v=f-e;
        scanf("%d",&n);
        for(i=1;i<=n;i++)
        {
            scanf("%d%d",&val[i],&c[i]);
        }
        for(i=1;i<=v;i++)dp[i]=inf;//初始化  注意
        dp[0]=0;////初始化  注意
        for(i=1;i<=n;i++)
        {
            for(j=c[i];j<=v;j++)
             dp[j]=min(dp[j],dp[j-c[i]]+val[i]);
        }
        if(dp[v]!=inf)
        printf("The minimum amount of money in the piggy-bank is %d.\n",dp[v]);
        else  printf("This is impossible.\n");

    }
}

  

原文地址:https://www.cnblogs.com/acSzz/p/2410180.html