2016寒假训练——01背包

来源:互联网 发布:期货行情软件下载 编辑:程序博客网 时间:2024/06/05 15:18

来源POJ3624

继续继续。。。前面把字典树写了两题,下面来两题背包。

背包最基础的题目,01背包。。。

我直接在代码上面注释吧?

AC代码:

#include <iostream>#include <algorithm>#include <cstdio>#include <cstring>using namespace std;struct Stone{    int v;//体积    int p;//价格}s[100100];int c[100100];int m(int a,int b){    if(a>b)return a;    else return b;}//比较的一个int main(){    int n,con;    long long ans=0;    while(scanf("%d%d",&n,&con)!=EOF){        memset(c,0,sizeof(c));        int i=0,j;        for(i=0;i<n;i++)            cin>>s[i].v>>s[i].p;        for(i=0;i<n;i++){            for(j=con;j>=s[i].v;j--)                c[j]=m(c[j],c[j-s[i].v]+s[i].p);//详见动态转移方程
/*用一个dp[]数组来作为标记的,其实有记录下所有搜索情况的意思。。。*/        }        cout<<c[con]<<endl;    }    return 0;}



1 0
原创粉丝点击