最长公共子串问题

来源:互联网 发布:淘宝退款不退货的 教程 编辑:程序博客网 时间:2024/04/28 07:46

类比Subquence问题的动态规划解法,Substring也可以用动态规划解决,令

c[i][j]表示同时以X[i]和Y[j]结尾,且包含X[i]和Y[j]的公共子串的长度。求c[i][j]的

可以转化为子问题c[i-1][j-1]

比如

X = <y, e, d, f>

Y = <y, e, k, f>

c[1][1] = 1

c[2][2] = 2

c[3][3] = 0

c[4][4] = 1

动态转移方程为:

如果xi == yj, 则 c[i][j] = c[i-1][j-1]+1

如果xi ! = yj,  那么c[i][j] = 0

 

最后求Longest Common Substring的长度等于

max{c[i][j], 1<=i<=n, 1<=j<=m}

原创粉丝点击