HDUHdu 2602 Bone Collector 01背包

来源:互联网 发布:怎么开好淘宝店 编辑:程序博客网 时间:2024/06/07 16:44

Hdu 2602 Bone Collector 非常常规的01背包问题,用一维和二维数组都可以做,一维快相当多。

典型的01背包,如果是刚刚入门的话,推荐看一下背包九讲。

经典的背包九讲:http://love-oriented.com/pack/    新手必看(可能看不懂,可以打打代码理解理解)


题意很简单就是一个背包问题。


ac代码:

#include <iostream>#include <stdio.h>#include <string.h>#include <algorithm>//max函数需要的头文件...之前忘了加结果错了...using namespace std;struct p{int price,v;}a[1005];int dp[1005];int main(){    int T,n,V;    scanf("%d",&T);    while(T--)    {        memset(dp,0,sizeof(dp));        scanf("%d%d",&n,&V);        for(int i=0;i<n;i++)        {            scanf("%d",&a[i].price);        }        for(int i=0;i<n;i++)        {            scanf("%d",&a[i].v);        }        for(int i=0;i<n;i++)        {            for(int j=V;j>=0;j--)            {                if(j<a[i].v) //保证能够放进背包里面                    break;                dp[j]=max(dp[j],dp[j-a[i].v]+a[i].price);            }        }        printf("%d\n",dp[V]);    }    return 0;}


0 0