OpenJudge 百练 2016 ACM 暑期课练习题 Charm Bracelet

来源:互联网 发布:cs1.5弹道优化参数 编辑:程序博客网 时间:2024/05/16 01:00

原题链接:

http://bailian.openjudge.cn/2016acm/01/


解题思路

一个简单的01背包问题在加上一点优化,及把二维数组通过滚动变为一维

唯一要注意的就是数组的大小问题(当时做的时候脑子一抽数组开错了= = 害得我wa了6遍)

源代码

#include<cstdio>#include<cstring>using namespace std;int f[12900];int w[3500];int d[3500];int maxn(int x,int y){    if (x>y)        return x;    return y;}int main(){    int n,m;    while(scanf("%d%d",&n,&m)!=EOF){    for (int i =1;i<=n;i++){        scanf("%d%d",&w[i],&d[i]);    }    memset(f,0,sizeof(f));    for (int i =1;i <=n;i++)        for (int j =m;j>=w[i];j--){            f[j] = maxn(f[j],f[j-w[i]]+d[i]);        }    printf("%d\n",f[m]);    }    return 0;}


0 0
原创粉丝点击