最長公共子序列 python
阿新 • • 發佈:2018-11-10
注意:子序列和子串的區別,前者是字串裡的不相隔的字元組成的串,字元的先後順序不變;後者是連續的字元組成的字串
實現下面的遞推式,就實現了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