您的位置:首页 > 其它

hdu2602 DP (01背包)

2015-03-02 19:17 218 查看
题意:有一个容量 volume 的背包,有一个个给定体积和价值的骨头,问最多能装价值多少。

经典的 01 背包问题不谈,再不会我就要面壁了。

终于有一道题可以说水过了 ……心好累

#include<stdio.h>
#include<string.h>
#define max(a,b) a>b?a:b

int va[1005],vo[1005],dp[1005];

int main(){
int T;
while(scanf("%d",&T)!=EOF){
for(int q=1;q<=T;q++){
memset(dp,0,sizeof(dp));
int n,v;
int i,j,ans=0;
scanf("%d%d",&n,&v);
for(i=1;i<=n;i++)scanf("%d",&va[i]);
for(i=1;i<=n;i++){
scanf("%d",&vo[i]);
for(j=v;j>=vo[i];j--){
dp[j]=max(dp[j],dp[j-vo[i]]+va[i]);
ans=max(dp[j],ans);
}
}
printf("%d\n",ans);
}
}
return 0;
}


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