動態規劃查詢最大公共子串行

2021-09-13 01:42:34 字數 815 閱讀 5585

• 使用二維陣列c[m,n]

• c[i,j]記錄序列xi和yj的最長公共子串行的長度

– 當i=0或j=0時,空序列是xi和yj的最長公共子串行,故c[i,j]=0

以上x和y進行一 一對比,

a和b不相等,則比較它的左邊那個數和上邊那個數他們兩誰大

a和d比較,不相等,同理

…直達a和a相比,相等,則它的左上角那個數+1

以此類推

然後按照圖寫b、c、b、a

def lcs_len(a,b):

n = len(a)

m = len(b)

l = [([0]*(m+1)) for i in range(n+1)]

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

else:

l[i][j]=max(l[i-1][j],l[i][j-1])

return l

a = 'abcbdab'

b = 'bdcaba'

l = lcs_len(a,b)

for i in l:

print(i)

動態規劃方法求最大公共子串行

想找個方式記錄一下自己的學習的歷程,思來想去沒有什麼好方法。所以,乾脆裝個b寫個部落格吧!當然 都是各處搬運的!我們只是 的搬運工!問題描述 字串行的子串行 是指從給定字串行中隨意地 不一定連續 去掉若干個字元 可能乙個也不去掉 後所形成的字串行 打符號太麻煩,此處省略,反正我不是寫來給別人看得!求...

java 動態規劃最大公共子串行問題

剛開始按照自己的思路寫出來結果是不多了,而且還出現了陣列越界異常,在一點點的修改下,終於對了,但是還有很多可以改進的地方 package first 最長公共子串行 public class lcs string b new string int m a.length int n b.length ...

動態規劃 最大公共子串行長度問題

昨晚部門出去吃火鍋,十來個人有說有笑的,感覺很不錯,不過因此昨天的 每日一題 也就沒時間了,現在補上。問題 有兩個字串a a1 a2 a3 an和b b1 b2 b3 bm,求兩者的最大公共子串行的長度,這裡的公共子串行就是相同的兩個字串中字元相同的子串行。如 abcdefg 和 acghlm的最大...