- 13
- 0
- 约2.62千字
- 约 9页
- 2022-03-03 发布于上海
- 举报
?
?
【算法设计与分析】最长公共子序列问题 动态规划算法 超详细
?
?
最长公共子序列问题描述
注意:最长公共子序列不一定是连续序列。例如:ASAFAGAHAJAK“与”AAAAAAA的最长公共子序列为:AAAAAA
公共子序列的定义证明最优子结构性质分析其递归关系式分别将第一个序列的元素个数设置为0到m,在每一个第一个序列的元素个数0到m的情况下,用内循环让第二个序列的元素从0到n遍历。
也就是说,先从0开始,求解很小的子问题,然后将这些子问题的解存储起来,当求解更大的问题时,会用到这些子问题的结果。这时,直接访问之前计算过的结果,避免了重复运算,这就是动态规划的巧妙之处,也正是需要证明其最优子结构性质的原因。
计算最优值
运行效果
c数组表示当前状态下,最长公共子序列的长度。s数组表示当前状态下,最长公共子序列的长度是由哪种情况(1/2/3)计算出来的。
调试中的一个过程截取:
比如说,求解ABCDEFGHI和BDFI的最长公共子序列。
第一步(填0):当i=0,j=0,1,2,3,...时,因为X={},所以最长子序列都是0
第二步(填0):i=1,2,3,...,j=0时,因为Y={},所以最长子序列是0(用这样的原理,把第一行和第一列都设置为0)
第三步(进入正常循环):当i=1,j=1时,也就是说当X的长度为1,Y的长度为1的条件下
原创力文档

文档评论(0)