'''
Created on 2012-11-9
@author: Pandara
'''
def lcs_len(a, b):
'''
a, b: strings
'''
n = len(a)
m = len(b)
l = [([0] * (m + 1)) for i in range(n + 1)]
direct = [([0] * m) for i in range(n)]#0 for top left, -1 for left, 1 for top
for i in range(n + 1)[1:]:
for j in range(m + 1)[1:]:
if a[i - 1] == b[j - 1]:
l[i][j] = l[i - 1][j - 1] + 1
elif l[i][j - 1] > l[i - 1][j]:
l[i][j] = l[i][j - 1]
direct[i - 1][j - 1] = -1
else:
l[i][j] = l[i - 1][j]
direct[i - 1][j - 1] = 1
return l, direct
def get_lcs(direct, a, i, j):
'''
direct: martix of arrows
a: the string regarded as row
i: len(a) - 1, for initialization
j:
LCS算法的python实现
最新推荐文章于 2023-04-22 20:13:33 发布