首页 > 试题广场 >

用LCS的动态规划方法计算X={B,D,B,C,A,B,A}

[问答题]
用LCS的动态规划方法计算X={B,D,B,C,A,B,A}与Y={A,B,C,B,D,A,B,A}的最大公共子序列。
1。最后一个元素如果相同,则添加进去,结果+1,如果不同,就比较max{ fun(i-1,j),fun(i,j-1)}选最大的。我觉得,用递归写起来简单点了。但是会有很多重复计算。 2。维护一个dp数组。因为递归重复计算了嘛,就找出怎么重复计算了。用数组来记录替代。所以dp两个下标分别表示,讲个数组走到哪里了。对dp(i,j)的计算,就用上面的公式
发表于 2017-09-15 18:24:12 回复(0)

0 1 2 3 4 5 6 7
0 0 0 0 0 0 0 0 0
1 0 0 0 0 0 1 1 1
2 0 1 1 1 1 1 2 2
3 0 1 1 1 2 2 2 2
4 0 1 1 2 2 2 3 3
5 0 1 2 2 2 2 3 3
6 0 1 2 2 2 3 3 4
7 0 1 2 3 3 3 4 4
8 0 1 2 3 3 4 4 5
最大公共子序列长度为5,比对一下,就发现还不止一种,有BDABA, BCABA, BBABA
编辑于 2023-01-28 21:49:11 回复(0)