笔记基于MIT 6.006第二节动态规划的课堂内容
先复习第一节动态规划内容:
Recall回忆:
-----SRTBOT program design for recursive algorithm design
&(with memoization) for DP algorithm design
-----Subproblem definition
Subproblem design
-----Relate subproblem solutions recursively递归地调度子问题
-----identify question about subproblem solution that,if you knew the answer,reduce to "smaller" subproblem将原问题分解成更小的子问题,直到最小的子问题解已知
------locally brute-force all answers to question暴力枚举所有可能的解
如果:input是一个sequence X
(如果输入是一个序列//一维:如字符串、数组等,序列X长度为n)
那么可以选择的子问题定义是:
1)前缀 prefixes X[:i] 子问题可以选择为从X[0]到X[i]的子序列
2)后缀 suffixes X[i:] 子问题选择为从X[i]到X[n]的子序列
3)子串 substrings X[i:j] 子问题选择为从元素X[i]到元素X[j]的string
//注意subsequence序列,与substring子串的区别