您的位置:首页 > 其它

2016SDAU课程练习三1024

2016-05-30 23:03 387 查看
1.题目编号:1024

2.简单题意:01背包问题

3.解题思路形成:首先给出物品数量和手中资金人后每样物品给出价格,需要购买时手中至少需要多少资金,还有物品本身的价值要求求出最大资金

4.感想:看不懂英语。。。或者看懂了,理解错了
5.AC代码:

#include <stdio.h>

#include <string.h>

#include <algorithm>

using namespace std;

struct node

{

    int p,q,v;

} a[555];

int cmp(node x,node y)

{

    return x.q-x.p<y.q-y.p;

}

int main()

{

    int n,m,i,j;

    int dp[5555];

    while(~scanf("%d%d",&n,&m))

    {

        for(i = 0; i<n; i++)

            scanf("%d%d%d",&a[i].p,&a[i].q,&a[i].v);

        memset(dp,0,sizeof(dp));

        sort(a,a+n,cmp);

        for(i = 0; i<n; i++)

        {

            for(j = m; j>=a[i].q; j--)

            {

                dp[j] = max(dp[j],dp[j-a[i].p]+a[i].v);

            }

        }

        printf("%d\n",dp[m]);

    }

    return 0;

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