动态规划-DynamicProgramming
动态规划处理的是一类可以被递归描述的问题
动态规划-DynamicProgramming
和一般递归问题不同,这类问题总往往有很多被重复计算的子结构
动态规划-DynamicProgramming
我们从底部向上构造整个解,使得所子问题计算都只有一次
functionfib(n){
leta=1,b=1
for(leti=2;i=n;i++){
[b,a]=[a+b,b]
}
returnb
}
缓存数据
动态规划-DynamicProgramming
但有时候问题没有那么简单,缓存数据可能是一个二维数组或者其他
例如:公共子序列问题
什么是子序列?
子序列,就是原序列不改变顺序,但是可以删除元素得到的序列。ABC有个8子序列:
A
B
C
AB
AC
BC
ABC
空字符串
为什么要求公共子序列呢?
ACGGTGTCGTGCTATGCTGATGCTGACTTATATGCTA
CGTTCGGCTATCGTACGTTCTATTCTATGATTTCTAA
LCS=CGTTCGGCTATGCTTCTACTTATTCTA
例子:lcs(ABCBDAB,BDCABA)
ABCBDAB
BDCABA
ABCBDAB
BDCABA
ABCBDAB
BDCABA
LCS长
原创力文档

文档评论(0)