五大算法的一些思路

分治递归:他是把原问题划分为各个子问题(形式相同,规模大子问题的解依赖的规模小的子问题的解),各个子问题不重叠,然后把各个子问题的解通过递归求解出来,其实这时原问题的解也就出来了(可以理解为一种各个子问题的解组合成原问题);

回溯递归:

动态规划:他是把原问题划分为各个子问题(形式相同,规模大子问题的解依赖的规模小的子问题的解,并且规模大的子问题依赖于规模小子问题,这个子问题有多个,不止一个;或者说不通的子问题具有公共的子子问题);通常是从自底向上(从子问题的规模最小开始递归或者循环)的计算过程(循环或者递归)。对于动态规划不一定是数组,也可能是一个变量;我们应该根据要求定义存储空间。

【由于子问题的重叠,用分治与递归会重复多次的计算这些公共的子问题,通过动态规划可以用空间把之前的最优解保存下来】

动态规划满足的两个条件:第一个是最优子结构,意思是问题的最优解包含子问题(可能有多个子问题决定)的最优解;两个是子问题重叠,见上面分析。

贪心算法:子问题之一必须为空(为空的时候为递归的)。不同的问题有不同的选择满足贪心算法的方法;在用贪心算法时候,我们先找到一个递归贪心算法,然后才将其转化为迭代。



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值