动态规划入门——Piggy-Bank

来源:互联网 发布:解放军报网络图片赵阳 编辑:程序博客网 时间:2024/04/26 19:18

转载请注明出处:http://blog.csdn.net/a1dark

分析:这题是一个裸的完全背包+刚好装满、求最小值、注意初始化、然后将01背包逆序、在把max改为min就行了、

#include<stdio.h>#include<algorithm>using namespace std;int w[501];int c[501];int dp[10001];int main(){    int t,a,b,n;    scanf("%d",&t);    while(t--){        scanf("%d%d%d",&a,&b,&n);        int s=b-a;        for(int i=0;i<n;i++)            scanf("%d%d",&w[i],&c[i]);        for(int i=0;i<=s;i++)            dp[i]=9999999;        dp[0]=0;        for(int i=0;i<n;i++)            for(int j=c[i];j<=s;j++)                dp[j]=min(dp[j],dp[j-c[i]]+w[i]);        if(dp[s]==9999999)            printf("This is impossible.\n");        else            printf("The minimum amount of money in the piggy-bank is %d.\n",dp[s]);    }    return 0;}


原创粉丝点击