码迷,mamicode.com
首页 > 其他好文 > 详细

hdu2602 DP (01背包)

时间:2015-03-02 20:51:33      阅读:183      评论:0      收藏:0      [点我收藏+]

标签:

题意:有一个容量 volume 的背包,有一个个给定体积和价值的骨头,问最多能装价值多少。

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

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

 

技术分享
 1 #include<stdio.h>
 2 #include<string.h>
 3 #define max(a,b) a>b?a:b
 4 
 5 int va[1005],vo[1005],dp[1005];
 6 
 7 int main(){
 8     int T;
 9     while(scanf("%d",&T)!=EOF){
10         for(int q=1;q<=T;q++){
11             memset(dp,0,sizeof(dp));
12             int n,v;
13             int i,j,ans=0;
14             scanf("%d%d",&n,&v);
15             for(i=1;i<=n;i++)scanf("%d",&va[i]);
16             for(i=1;i<=n;i++){
17                 scanf("%d",&vo[i]);
18                 for(j=v;j>=vo[i];j--){
19                     dp[j]=max(dp[j],dp[j-vo[i]]+va[i]);
20                     ans=max(dp[j],ans);
21                 }
22             }
23             printf("%d\n",ans);
24         }
25     }
26     return 0;
27 }
View Code

 

hdu2602 DP (01背包)

标签:

原文地址:http://www.cnblogs.com/cenariusxz/p/4309581.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!