您的位置:首页 > 其它

递归:分治法与动态规划

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背包问题理解动态规划
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: