# 贪心算法、回溯算法、动态规划的区别
回溯算法
:需要记录每一个步骤、每一个选择,用于回答所有具体解的问题动态规划
:需要记录的是每一个步骤、所有选择的汇总至(最大、最小或者计数)贪心算法
:由于适用的问题,每一个步骤只有一种选择,一般而言只需要记录与当前步骤相关的变量的值
# 动态规划需要考虑原问题的所有的子问题

# 贪心算法每一次只需要考虑一个子问题,并且通常是自底向上求解

# 可以使用贪心算法
的问题需要满足的条件
- 最优子结构:规模较大的问题的解由规模较小的子问题的解组成,区别于
动态规划
,可以使用贪心算法
的问题规模较大的问题的解
只由其中一个规模较小的子问题的解
决定 - 无后效性:后面阶段的求解不会修改前面阶段已经计算好的结果
- 贪心选择性质:从局部最优解可以得到全局最优解
对「最优子结构」和「无后效性」的理解同「动态规划」,「贪心选择性质」是「贪心算法」最需要关注的内容。