2016SDAU课程练习三1018

来源:互联网 发布:为什么需要软件测试 编辑:程序博客网 时间:2024/03/29 02:37
1.题目编号:1018
2.简单题意:完全背包问题
3.解题思路形成:称出背包装物品前后的重量,求最小价值。
4.感想:kuangbin老师开始教我们时候介绍的微博,,因为不懂,所以我也注册了博客园的,便于阅读他的博客,,,这个,就一样了。。

5.AC代码:

#include<stdio.h>
#include<string.h>
#define INF 0x7ffffff
#define MAXN 10000
int dp[MAXN+10];//dp[i]表容量为i的时候所装东西的最小价值
int main()
{
    int w1,w2;
    int P,W;
    int T,n;
    int i,j;
    scanf("%d",&T);
    while(T--)
    {
        scanf("%d%d",&w1,&w2);
        scanf("%d",&n);
        for(i=1;i<=w2-w1;i++)
           dp[i]=INF;//初始化为无穷大
        dp[0]=0;
        while(n--)
        {
            scanf("%d%d",&P,&W);
            for(i=W;i<=w2-w1;i++)
                if(dp[i]>dp[i-W]+P)
                   dp[i]=dp[i-W]+P;
        }
        if(dp[w2-w1]==INF) printf("This is impossible.\n");
        else
           printf("The minimum amount of money in the piggy-bank is %d.\n",dp[w2-w1]);     
    }    
    return 0;
}

0 0