0-1背包问题分析及代码实现
2016-08-30 21:39
176 查看
感觉文章开头需要说明哈为啥子要写这个文章,没错就是又被笔试给虐了,做完爱奇艺的笔试,体会最深的一句话就是出来混总是要还的,还记得研一的时候,算法老师在讲台上讲的口干舌燥,我在台下手机刷的飞快,还记得算法老师说这道题可能会考,还记得算法只考了60+(捂脸),别说都大学了,成绩能够及格就万岁,等你找工作上传成绩单时,就等着肠子悔青吧,哦对了,评审学业奖金的时候肠子也会悔青(我的8000块啊(大哭以及歇斯底里状))。
好了废话少说,先上几个链接
[]http://www.cnblogs.com/daoluanxiaozi/archive/2012/05/06/2486105.html]
[]http://jingyan.baidu.com/article/3ea51489fbdaa152e61bba38.html]
[]http://blog.sina.com.cn/s/blog_8cf6e8d90100zldn.html]
这几个链接都分析的不错
对于背包问题,总的来时就是,将包的容量化小,将物体个数化少,然后再逐渐增大,先解决局部的问题,然后扩大到整体局部。
在这次代码中,不仅仅理解了背包的问题,还有动态申请数组的问题,友情提示,笔试的时候如果搞不清楚二位动态数组的话,赶紧使用全局变量吧,鬼知道时间是有多宝贵,还有记得将动态申请的数组释放掉。
好了废话少说,先上几个链接
[]http://www.cnblogs.com/daoluanxiaozi/archive/2012/05/06/2486105.html]
[]http://jingyan.baidu.com/article/3ea51489fbdaa152e61bba38.html]
[]http://blog.sina.com.cn/s/blog_8cf6e8d90100zldn.html]
这几个链接都分析的不错
对于背包问题,总的来时就是,将包的容量化小,将物体个数化少,然后再逐渐增大,先解决局部的问题,然后扩大到整体局部。
#include<iostream> using namespace std; int ZeroOneBackPack(int *Weight,int *Value,int **total,int n,int v) { for(int i=1;i<=n;++i) { for(int j=1;j<=v;++j) { if (j<Weight[i-1]) total[i][j]=total[i-1][j]; else { total[i][j]=max(total[i-1][j],total[i-1][j-Weight[i-1]]+Value[i-1]); } } } int maxValue=total[1][1]; for(int i=1;i<=n;++i) { for(int j=1;j<=v;++j) { if(maxValue<total[i][j]) maxValue=total[i][j]; } } return maxValue; } int main() { int n,v; while(cin>>n>>v) { int *Weight=new int ; int *Value=new int ; for(int i=0;i<n;++i) cin>>Weight[i]; for(int i=0;i<n;++i) cin>>Value[i]; int **total; total=new int*[n+1]; for(int i=0;i<n+1;++i) { total[i]=new int[v+1]; memset(total[i],0,(v+1)*sizeof(int)); } //0-1背包问题 cout<<ZeroOneBackPack(Weight,Value,total,n,v)<<endl; for(int i=0;i<=n;++i) delete []total[i]; delete []Weight; delete []Value; } return 0; }
在这次代码中,不仅仅理解了背包的问题,还有动态申请数组的问题,友情提示,笔试的时候如果搞不清楚二位动态数组的话,赶紧使用全局变量吧,鬼知道时间是有多宝贵,还有记得将动态申请的数组释放掉。
相关文章推荐
- 背包问题---01背包最优方案总数(原理剖析代码实现)
- 背包问题---01背包(原理,伪代码,编程实现)
- 动态规划算法分析及实例——求解完全背包问题(java实现)
- Coursera deeplearning.ai 深度学习笔记2-1-Practical aspects of deep learning-神经网络实际问题分析(初始化&正则化&训练效率)与代码实现
- 背包问题——“01背包”及“完全背包”装满背包的方案总数分析及实现
- 背包问题---01背包|完全背包(装满背包的方案总数分析及实现)
- 深度学习——梯度下降实现对感知器的权重优化问题的分析(理论加上梯度下降的代码实现)
- 背包问题简介及代码分析(C、OC都可运行)
- 背包问题----完全背包(最优方案总数分析及实现)
- 背包问题---01背包最优方案总数(原理剖析代码实现)
- 0-1背包问题动态规划代码实现(C++实现)
- PHP用SAX解析XML的实现代码与问题分析
- 动态规划-背包问题九讲及其代码实现
- 背包问题——“01背包”最优方案总数分析及实现
- 背包问题——“完全背包”最优方案总数分析及实现
- 背包问题---01背包|完全背包(装满背包的方案总数分析及实现)
- RPG游戏《黑暗之光》流程介绍与代码分析之(六):背包系统的实现(下)
- 最右校招-服务器日志分析:一个十万行log统计问题的c语言代码的实现1
- 最右校招-服务器日志分析:一个十万行log统计问题的c语言代码的实现2