您的位置:首页 > 其它

POJ 1384 完全背包问题

2012-11-15 21:29 288 查看
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]);

    }

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: