hdu-2602-Bone Collector(01背包)

来源:互联网 发布:java socket 高性能 编辑:程序博客网 时间:2024/06/05 00:32

题目链接


题意:N是物品个数,V是容量 第一排是价值,第二排是体积。

思路:这是一个基础的01背包题。。。

code:

#include<cstdio>#include<iostream>#include<cstring>using namespace std;const int MAXN = 1010;int dp[MAXN],v[MAXN],w[MAXN];int main(){    int T,n,m;    scanf("%d",&T);    while(T--){        scanf("%d %d",&n,&m);        for(int i=0;i<n;i++)            scanf("%d",&v[i]);        for(int i=0;i<n;i++)            scanf("%d",&w[i]);        memset(dp,0,sizeof(dp));        for(int i=0;i<n;i++){            for(int j=m;j>=w[i];j--){//这里的要注意是大于w[i]不然数组会爆掉                dp[j]=max(dp[j],dp[j-w[i]]+v[i]);            }        }        printf("%d\n",dp[m]);    }    return 0;}


原创粉丝点击