您的位置:首页 > 其它

hdu2602Bone Collector(DP---01背包)

2013-08-14 21:17 99 查看
1.题目链接:

http://acm.hdu.edu.cn/showproblem.php?pid=2602

 

2.参考代码:

 

#include <stdio.h>
#include <string.h>

#define N 1111
int n,v;
int dp
;
int b
,a
;

int max(int i,int j){return i>j?i:j;}

int main()
{
int t,i,j;
scanf("%d",&t);
while(t--)
{
memset(dp,0,sizeof(dp));
scanf("%d%d",&n,&v);
for(i=1;i<=n;i++)
scanf("%d",&a[i]);
for(i=1;i<=n;i++)
scanf("%d",&b[i]);   ///为什么分开接收就ac,合着接收就wa,汗!
for(i=1;i<=n;i++)
{
for(j=v;j>=b[i];j--)   ///正数的01背包从后往前递推,完全背包或者有负数的01背包从后往前递推
dp[j]=max(dp[j],dp[j-b[i]]+a[i]);
}
printf("%d\n",dp[v]);
}
return 0;
}


 

 
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  DP 01背包