动态规划Dynamic Programming

动态规划问题

问题特性

最优子结构 Optimal Substructure

子问题最优解 可以 得出 原问题最优解

重叠子问题 Overlapping Subproblems

递归过程中会出现重复的子问题求解

价值

一旦出现上述问题特征,可以使用 两大手法 瞬间降低时间复杂度

两大手法

Top Down 沿途记忆

沿途记忆中间的值,下次再求时,不再求

Bottom Up 反递归

先求 小问题,求大问题时,已有小问题的答案

时间复杂度分析

练习

切绳子问题Rod Cutting

已知一个价格列表

长度12345
价格1581013

问,给你一个 n 米的绳子,怎么切,才值最多钱

最长公共子序列Longest Common Subsequence | LCS

已知两个字符串,找出他们最长的公共子字符串

比如

"ACTGGGTAC"
"AGTTAC"

AGA 是 其中一个 Common Subsequence,因为

"ACTGGGTAC"
 ^  ^   ^
"AGTTAC"
 ^^  ^

AGTAC 是其中一个 LCS

ZZAX 微信公众

文档一更新,立刻告诉你