POJ 1384 完全背包问题

来源:互联网 发布:淘宝买止咳水的暗语 编辑:程序博客网 时间:2024/05/20 16:35

http://poj.org/bbs?problem_id=1384

完全背包问题,训练赛上没有注意初始化,悲催的结局中...

#include<iostream>
#include<algorithm>
#include<cstdio>
using namespace std;
#define manx 505
#define inf 99999999
int x[manx],y[manx];
int dp[10009];
int main(){
    int t,e,f;
    scanf("%d",&t);
    while(t--){
        int n,flag=0;
        scanf("%d%d%d",&e,&f,&n);
        int sum=f-e;
        for(int i=0;i<550;i++)
            x[i]=y[i]=0;
        for(int i=0;i<=10009;i++)  //  初始化问题 
            dp[i]=inf;
        dp[0]=0;
        for(int i=1;i<=n;i++){
            scanf("%d%d",&x[i],&y[i]);
        }
        for(int i=1;i<=n;i++){   //  完全背包状态转移方程 
            for(int j=y[i];j<=sum;j++){
                dp[j]=min(dp[j],dp[j-y[i]]+x[i]);
            }
        }
        if(dp[sum]==inf)  printf("This is impossible.\n");
        else  printf("The minimum amount of money in the piggy-bank is %d.\n",dp[sum]);
    }
}