本文主要是介绍hdoj 2602 Bone Collector 【01背包】,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
题意:给出袋子的体积和骨头的个数,然后又给出每个骨头的价值和体积,求袋子最多能装的骨头的价值
难点;这道题是最基础的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;
}
这篇关于hdoj 2602 Bone Collector 【01背包】的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!