四大经典算法思想

本文详细介绍了四种经典的算法思想:贪心算法、分治算法、回溯算法和动态规划。贪心算法在每一步选择最优解,如解决零钱找零问题;分治算法通过拆解问题并递归解决,如归并排序;回溯算法用于试探性搜索,例如八皇后问题;动态规划通过存储子问题结果优化求解过程,如斐波那契数列的计算。
摘要由CSDN通过智能技术生成

最经典的算法思想有以下几种:

  • 贪心算法:每一步都采用最优的选择,从而希望结果是最好的
  • 分治算法:将原问题拆分成多个结果类似的子问题,递归解决后再合并其结果
  • 回溯算法:类似于试探性枚举搜索,用于指导深度优先搜索这样的经典算法
  • 动态规划:优化自顶向下的重复子问题,自底向上地推算出问题的最优解

贪心算法

理论

贪心算法是一种在每一步选择当中都采取当前状态下最好或最优(即最有利)的选择,从而希望导致结果是最好或最优的算法。

贪心算法在有最优子结构的问题中尤为有效,简单地说,就是问题能够分解成子问题来解决,子问题的最优解就能递推到最终问题的最优解。

细节

  1. 创建数学模型来描述问题;
  2. 把问题分成若干个子问题;
  3. 对每一子问题求解,得到子问题的局部最优解;
  4. 把子问题的局部最优解合并成原来问题的一个解。

案例

对于零钱的问题:假设有 25 分、10 分、5 分、1 分这 4 种硬币,现在要从中取出 41 分钱的硬币,并且要求硬币的个数最少。

通过贪心算法,我们每次都拿出最大额度的硬币,直到此额度超过了所需的额度。详细的过程如下:

  1. 对于 41 分钱,拿出 25 分的硬币,此时还差 16 分钱,25 分的硬币超过了所需的额度,自然需要往更优、更小的额度去取;
  2. 对于 16 分钱,拿出 10 分的硬币,此时还差 6 分钱,10 分的硬币超过了所需的额度,自然需要往更优、
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值