注意:子序列和子串的区别,前者是字符串里的不相隔的字符组成的串,字符的先后顺序不变;后者是连续的字符组成的字符串
实现下面的递推式,就实现了dp动归。更多图解的过程,可以参看博客http://blog.csdn.net/hrn1216/article/details/51534607
class LCS:
def findLCS(self, A, n, B, m):
if m == 0 or n == 0:
return -1
c = [[0 for _ in xrange(m + 1)] for _ in range(n + 1)]
for i in range(1, n + 1):
for j in range(1, m + 1):
if A[i - 1] == B[j - 1]:
c[i][j] = c[i - 1][j - 1] + 1
else:
c[i][j] = max(c[i][j - 1], c[i - 1][j])
return c[-1][-1]
if __name__ == '__main__':
line = raw_input().split(',')
A = line[0][1:-1]
n = int(line[1])
B = line[2][1:-1]
m = int(line[-1])
print LCS().findLCS(A, n, B, m)
后面一种方式定义的是一种引用,修改其中一个,其他的也会发生变化
参考文献
http://blog.csdn.net/hrn1216/article/details/51534607
http://www.cnblogs.com/zfyouxi/p/4195215.html