hdoj 2602 Bone Collector 【01背包】

来源:互联网 发布:企业邮箱域名申请 编辑:程序博客网 时间:2024/06/05 01:15

题意:给出袋子的体积和骨头的个数,然后又给出每个骨头的价值和体积,求袋子最多能装的骨头的价值

难点;这道题是最基础的01背包题,不懂得话推荐看《背包九讲》

AC by SWS

题目链接 http://acm.hdu.edu.cn/showproblem.php?pid=2602

代码:

#include<stdio.h>#include<string.h>typedef struct{int w, v; }str;str s[1005];int dp[1005];int main(){int n, m, t, i, j;scanf("%d", &t);while(t --){scanf("%d%d", &n, &m);for(i = 0; i < n; i ++)scanf("%d", &s[i].w);for(i = 0; i < n; i ++)scanf("%d", &s[i].v);memset(dp, 0, sizeof(dp));for(i = 0; i < n; i ++)for(j = m; j >= s[i].v; j --){if(dp[j]<dp[j-s[i].v] + s[i].w) dp[j] = dp[j-s[i].v]+s[i].w;}printf("%d\n", dp[m]);}return 0;}


0 0
原创粉丝点击