首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > 编程 >

hdu 2602 Bone Collector(01双肩包)

2012-12-19 
hdu 2602 Bone Collector(01背包)看题目请点这里题意:给你n种骨头的价和体积,并且每种骨头都只有一个,让你

hdu 2602 Bone Collector(01背包)

看题目请点这里

题意:

给你n种骨头的价值和体积,并且每种骨头都只有一个,让你选择其中的骨头装到容积为v的袋子里,求可以得到的最大价值。

经典01背包。

代码:

#include<iostream>using namespace std;int main(){    int t,n,v,i,j;    int value[1001],volume[1001],dp[1001];    scanf("%d",&t);    while(t--)    {        memset(dp,0,sizeof(dp));        scanf("%d %d",&n,&v);        for(i=0;i<n;i++)   //骨头价值        {            scanf("%d",value+i);        }        for(i=0;i<n;i++)   //骨头体积        {            scanf("%d",volume+i);        }        for(i=0;i<n;i++)        {            for(j=v;j>=volume[i];j--)            {if(dp[j]<dp[j-volume[i]]+value[i]){dp[j]=dp[j-volume[i]]+value[i];}            }        }        printf("%d\n",dp[v]);    }    return 0;}


 

 

 

热点排行