HDU 2602Bone Collector (01背包问题)
来源:互联网 发布:斐波那契java 编辑:程序博客网 时间:2024/06/05 14:46
一道01背包的基础题, 题意: 一个人,有N个物品,V容量的背包、N行为每个物品的价值,和体积 问在我背包尽量装满的情况下,获得最大的价值为多少、
按照dp的思想,依次枚举每一个物品的体积v,由于是一维dp所以需要从最大体积开始循环循环到当前体积为止,为什么要从最大体积开始循环呢? 因为,如果我从最小体积开始循环一直循环到最大体积,那样不符合我们dp的思想,前面求出的当前体积的最大价值,会影响我们后面的体积的最大价值、 从最大体积V开始一次递减那样则不会影响我前面dp[j]体积的价值、 如果没有理解,可以自己在草纸上模拟一下过程,那样理解的深刻一些、
AC 代码:
#include<cstdio>#include<cstring>#include<algorithm>using namespace std;const int maxn=1100;int T;int N,V;int w[maxn];int v[maxn];int dp[maxn];int main(){ scanf("%d",&T); while(T--){ memset(dp,0,sizeof(dp)); scanf("%d %d",&N,&V); for(int i=0;i<N;i++) scanf("%d",&w[i]); for(int i=0;i<N;i++) scanf("%d",&v[i]); for(int i=N-1;i>=0;i--){ for(int j=V;j>=v[i];j--){ dp[j]=max(dp[j],dp[j-v[i]]+w[i]); } } printf("%d\n",dp[V]); } return 0;}
0 0
- HDU 2602Bone Collector (01背包问题)
- hdu 2602 Bone Collector 01背包问题
- HDU 2602 Bone Collector 背包问题
- hdu 01背包问题 Bone Collector
- HDU-Bone Collector(01背包问题)
- bone collector hdu 01背包问题
- hdu 2602 Bone Collector (01 背包问题)
- 01背包问题之HDU——2602 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 (01 背包)Bone Collector
- hdu 2602 Bone Collector 01背包
- hdu 2602 Bone Collector 01背包
- hdu 2602 Bone Collector (01背包)
- hdu 2602 Bone Collector【01背包】
- iOS label 加下横线
- WIFI ioctl调用(从应用程序到内核再到WIFI网卡驱动)
- 总结&备忘:smslib&长短信
- 技术人员如何提升自己的价值
- Android常用代码之普通及系统权限静默安装APK
- HDU 2602Bone Collector (01背包问题)
- Dungeon Game
- Hibernate中两种获取Session的方式
- ImportError at /polls cannot import name patterns
- C++中的static关键字的总结
- Buffer创始人谈开发:先验证,后开发!
- static和他的好基友
- VC 怎么实现对鼠标离开对话框时,事件的处理
- Oracle与Mysql数据的事务处理机制