动态规划是解决复杂问题的重要范式,其核心思想是将大问题分解为相互关联的子问题。
与暴力递归相比,动态规划通过存储子问题的解来避免重复计算,这种“以空间换时间”的策略大幅提升了效率。成功应用动态规划需要满足两个基本条件:最优子结构和重叠子问题。
最优子结构意味着全局最优解包含局部最优解,而重叠子问题则保证存储的中间结果能够被多次利用。掌握这一思想是进一步学习各类动态规划变体的基础。
与暴力递归相比,动态规划通过存储子问题的解来避免重复计算,这种“以空间换时间”的策略大幅提升了效率。成功应用动态规划需要满足两个基本条件:最优子结构和重叠子问题。
最优子结构意味着全局最优解包含局部最优解,而重叠子问题则保证存储的中间结果能够被多次利用。掌握这一思想是进一步学习各类动态规划变体的基础。
01
跳石阶
普及-
--
练习
02
跳石头
普及-
--
练习
03
跳跃假期
普及/提高-
--
练习
04
背包选礼物
普及-
--
练习
05
最长公共子序列
普及-
--
练习
06
编辑距离
普及/提高-
--
练习
07
网格路径计数
普及-
--
练习
08
最长上升子序列
普及/提高-
--
练习
09
彩带分割
普及/提高-
--
练习
10
相邻数清理
普及/提高-
--
练习
11
ATM
普及/提高-
--
练习
12
避免K分割
普及/提高-
--
练习
13
额外经验
普及/提高-
--
练习
14
礼物
普及/提高-
--
练习
15
abc245C - Choose Elements
普及/提高-
--
练习
16
ABC286D - Money in Hand
普及/提高-
--
练习
17
abc270D - Stones
普及+/提高
--
练习
18
abc312D-括号序列计数
普及/提高-
--
练习
19
拼花带
普及+/提高
--
练习
20
传纸条
普及/提高-
--
练习