HDOJ 2602 Bone Collector 解题报告

    01背包问题。以前没有做过,也没学过,所以在百度上学习了一下,链接:http://baike.baidu.com/view/841810.htm

    AC代码如下:

#include <iostream>
using namespace std;
const int MAXLEN=1010;

int f[MAXLEN];
int c[MAXLEN];
int w[MAXLEN];

int main()
{
    int n,v,i,j,cas;
    cin>>cas;
    while(cas--)
    {
        cin>>n>>v;
        memset(f,0,sizeof(f));
        for(i=0;i<n;i++)
            cin>>w[i];
        for(i=0;i<n;i++)
            cin>>c[i];
        for(i=0;i<n;i++)
            for(j=v;j>=c[i];j--)
                f[j]=(f[j]>f[j-c[i]]+w[i]?f[j]:f[j-c[i]]+w[i]);
        cout<<f[v]<<endl;
    }
}

 

posted @ 2013-02-08 11:40  SF-_-  阅读(129)  评论(0编辑  收藏  举报