4-5最长公共子序列问题 算法分析

时间:2016-07-23 15:02:10
【文件属性】:

文件名称:4-5最长公共子序列问题 算法分析

文件大小:3KB

文件格式:RAR

更新时间:2016-07-23 15:02:10

最长公共序列

动态规划的一个计算两个序列的最长公共子序列的方法如下:   以两个序列 X、Y 为例子:   设有二维数组 f[i,j] 表示 X 的 i 位和 Y 的 j 位之前的最长公共子序列的长度,则有:   f[1][1] = same(1,1);   f[i,j] = max{f[i-1][j -1] + same(i,j),f[i-1,j],f[i,j-1]}   其中,same(a,b)当 X 的第 a 位与 Y 的第 b 位完全相同时为“1”,否则为“0”。   此时,f[j]中最大的数便是 X 和 Y 的最长公共子序列的长度,依据该数组回溯,便可找出最长公共子序列。   该算法的空间、时间复杂度均为O(n^2),经过优化后,空间复杂度可为O(n)。


【文件预览】:
4-5最长公共子序列问题
----子序列.cpp(2KB)
----input.txt(24B)
----最长公共子序列问题.plg(963B)
----最长公共子序列问题.dsp(5KB)
----output.txt(9B)
----4-5.h(87B)
----main.cpp(79B)

网友评论

  • 用JaVA写的 并不容易导入工程