递归:分治法与动态规划
2015-12-26 21:35
330 查看
包含指针节点的数据结构在本质上是递归的,它也许不能用于处理大型链表,因为递归的深度可能与链表的长度成正比。
分–将问题分解为规模更小的子问题;
治–将这些规模更小的子问题逐个击破;
合–将已解决的子问题合并,最终得出“母”问题的解;
1. 分治法
分治法的精髓:分–将问题分解为规模更小的子问题;
治–将这些规模更小的子问题逐个击破;
合–将已解决的子问题合并,最终得出“母”问题的解;
1.1 使用分治法求数组中的最大值
函数将数组a[1],……,a[r]分成两部分,分别求出每部分的最大元素(递归地),并返回较大的那一个作为整个数组的最大元素。Item max(Item a[],int l,int r) { Item u,v;int m=(l+r)/2; if (l==r) return a[l];//如果只有一个元素,就返回它 u=max(a,l,m); v=max(a,m+1,r); if(u>v) return u;else return v; }
2. 动态规划
2.1 动态规划与01背包问题
从01背包问题理解动态规划相关文章推荐
- online_judge_1151
- 【杭电】[5499]SDOI
- Linux下tomcat的安装配置
- Linux文件及目录命名规则
- Http相关 --概念
- C++笔记——类的继承和访问控制
- MFC从资源文件获取png图片
- JavaScrip——对话框的简单应用(判断isNaN)
- nagios安装配置
- Linux文件及目录命名规则
- 通过aidl实现传送远程服务中的对象
- 图---Dijstra
- java异常分类(运行时异常,可检查异常)
- 图---Dijstra
- 多线程开发之NSOperation
- MFC自定义按钮实现CRgnButton
- 关于nsdata的压缩的问题base64,图片转字符串,图片的压缩的问题
- emoji 表情图片解决方法
- Cookie杂学
- Java WeakReference的理解与使用