码迷,mamicode.com
首页 > 其他好文 > 详细

LCS 最长公共子序列

时间:2018-04-17 19:39:03      阅读:238      评论:0      收藏:0      [点我收藏+]

标签:pre   连续   ret   技术   子串   main   .com   最长公共子序列   image   

区别最长公共子串(连续)

 

 

技术分享图片

 

技术分享图片

技术分享图片

 

 1 ‘‘‘
 2 LCS 最长公共子序列
 3 ‘‘‘
 4 
 5 
 6 def LCS_len(x, y):
 7     m = len(x)
 8     n = len(y)
 9     dp = [[0] * (n + 1) for i in range(m + 1)]
10     B = [[ ] * (n + 1) for i in range(m + 1)]
11     for i in range(1, m + 1):
12         for j in range(1, n + 1):
13             if x[i - 1] == y[j - 1]:
14                 dp[i][j] = dp[i - 1][j - 1] + 1
15                 B[i][j] = X
16             elif dp[i - 1][j] > dp[i][j - 1]:
17                 dp[i][j] = dp[i - 1][j]
18                 B[i][j] = L
19             else:
20                 dp[i][j] = dp[i][j - 1]
21                 B[i][j] = T
22     print(dp)
23     return dp, B
24 
25 
26 def LCS_str(B, x, i, j):
27     if i == 0 or j == 0:
28         return
29     if B[i][j] == X:
30         print(x[i - 1])
31         LCS_str(B, x, i - 1, j - 1)
32 
33     elif B[i][j] == L:
34         LCS_str(B, x, i - 1, j)
35     else:
36         LCS_str(B, x, i, j - 1)
37 
38 
39 def main():
40     x = ABDC
41     y = AFBC
42     dp, B = LCS_len(x, y)
43     LCS_str(B, x, len(x), len(y))
44 main()

 

LCS 最长公共子序列

标签:pre   连续   ret   技术   子串   main   .com   最长公共子序列   image   

原文地址:https://www.cnblogs.com/zle1992/p/8868274.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!