Chapter 4 动态规划
4.1 神奇的兔子序列
4.2 动态规划基础
4.3 孩子有多像爸爸——最长的公共子序列
4.4 DNA基因鉴定——编辑距离
4.5 长江一日游——游艇租赁
4.6 快速计算——矩阵连乘
4.7 切呀切披萨——最优三角剖分
4.8 小石子游戏——石子合并
4.9 大卖场购物车1——0-1背包问题
4.10 快速定位——最优二叉搜索树
4.11 动态规划算法秘籍
前面讲的分治法是将原问题分解为若干个规模较小、形式相同的子问题,然后求解这些子问题,合并子问题的解得到原问题的解。在分治法中,各个子问题是互不相交的,即相互独立。如果各个子问题有重叠,不是相互独立的,那么用分治法就重复求解了很多子问题,根本显现不了分治的优势,反而降低了算法效率。那该怎么办呢?
动态规划闪亮登场了!
4.1 神奇的兔子序列
公元1202年,意大利数学家列昂纳多•斐波那契(Leonardo Fibonacci)在《算盘全书》(Liber Abaci)中描述了一个神奇的兔子序列,这就是著名的斐波那契序列。
假设第1个月有1对刚诞生的兔子,第2个月进入成熟期,第3个月开始生育兔子,而1对成熟的兔子每月会生1