最长公共子序列分析

已知序列string1={B,C,D,B}和序列string2={A,B,C,B,D},由递推关系:
c[i][j]存储集合string1(个数为i)和string2(个数为j)的最长公共子序列长度
b[i][j]记录c[i][j]的值是由哪一个子问题的解得到的,用1,2,3分别代表子问题c[i-1][j-1],c[i-1][j]和c[i][j-1]。
由string1和string2列得的c[i][j]以及相应的b[i][j]表如下:
c[i][j]
i,j 0 1 2 3 4 5
0 0 0 0 0 0 0
1 0 0 1 1 1 1
2 0 0 1 2 2 2
3 0 0 1 2 2 3
4 0 0 2 2 3 3
b[i][j]
i,j 0 1 2 3 4 5
0 0 0 0 0 0 0
1 0 2 1 3 3 3
2 0 2 2 1 3 3
3 0 2 2 2 2 1
4 0 2 2 2 1 2


最终最优值c[4][5]=3 ,最优解为string1[1,2,3],string2[2,3,6],为BCD 。
算法下次给出:

猜你喜欢

转载自blog.csdn.net/ion_l/article/details/74082902