HDU 2602 Bone Collector (01背包)
来源:互联网 发布:悉尼大学平均分算法 编辑:程序博客网 时间:2024/06/06 08:46
描述
给n块质量为c[i]价值为v[i]的骨头和一个可容纳V大小的背包,如何选择骨头使得价值最大。
Sample Input
1
5 10
1 2 3 4 5
5 4 3 2 1
Sample Output
14
Solution
使用一个滚动数组实现
1. 注意价值数组,重量数组,dp数组的范围
2. 上述三个数组的 memset
很重要
3. 一维滚动数组循环格式为 for (int i = 0; i < n; i++) for (int j = v; j >= volume[i]; j--)
4. 最后一个元素为dp[weight]
#include <iostream>#include <algorithm>#include <cstring>using namespace std;int value[1005] = {0};int volume[1005] = {0};int dp[1000005] = {0};int main(){ int T; cin >> T; while (T--) { memset(value, 0, sizeof(value)); memset(volume, 0, sizeof(volume)); memset(dp, 0, sizeof(dp)); int n, v; cin >> n >> v; for (int i = 0; i < n; i++) { cin >> value[i]; } for (int i = 0; i < n; i++) { cin >> volume[i]; } for (int i = 0; i < n; i++) { for (int j = v; j >= volume[i]; j--) { dp[j] = max(dp[j], dp[j - volume[i]] + value[i]); } } cout << dp[v] << endl; } return 0;}
阅读全文
1 0
- hdu 2602 (01 背包)Bone Collector
- hdu 2602 Bone Collector 01背包
- hdu 2602 Bone Collector 01背包
- hdu 2602 Bone Collector (01背包)
- hdu 2602 Bone Collector【01背包】
- hdu 2602 Bone Collector 简单01背包
- hdu 2602 Bone Collector(01背包)
- hdu 2602 Bone Collector (01背包)
- HDU 2602 Bone Collector(裸01背包)
- HDU 2602 Bone Collector( 01背包 )
- HDU 2602 Bone Collector(01背包)
- hdu 2602 Bone Collector 01背包
- HDU 2602 Bone collector 01背包
- hdu 2602 Bone Collector (01背包 )
- hdu 2602 Bone Collector (01背包)
- HDU 2602 Bone Collector (01背包)
- HDU--2602 -- Bone Collector [01背包]
- HDU 2602 Bone Collector(01背包)
- POJ 1141 Brackets Sequence——区间dp
- php 分批获取数据
- 19、vue.js 之vue模板代码的书写与引用
- 工作流引擎Activiti学习---使用类个人任务分配
- 基本的c语言编译器的实现
- HDU 2602 Bone Collector (01背包)
- char[]和char*的区别
- vue笔记(1)——插值总结
- Android中在fragment中实现点击按钮事件
- c++ typename class区别
- linux下tar.gz、tar、bz2、zip等解压缩、压缩命令小结
- 关于ajax中success返回值赋值给全局变量undefined
- 关于飞机大战的第一个页面的制作
- java程序执行shell脚本Demo