计算最长公共子序列的方法,
def lcs_length(x, y):
m = len(x)
n = len(y)
c= [[0 for _ in range(n+1)] for _ in range(m+1)] # 构建一个m*n的方形
for i in range(1, m+1):
for j in range(1, n+1):
if x[i-1] == y[j-1]:
c[i][j] = c[i-1][j-1] + 1 # j位置上的字符匹配,来自于左上方+1
else:
c[i][j] = max(c[i-1][j], c[i][j-1])
return c[m][n]
思维方法,这是两个一维线性数组,什么是公共子序列,意思就是当前的序列关系是将x和y轴两边的数组进行匹配,符合左边的数组与右边的数组进行对比,符合的加上,不符合的减去。