當前位置:成語大全網 - 書法字典 - 最長公共連續子序列和最長公共子序列

最長公共連續子序列和最長公共子序列

最長的公共* * *序列:

答?長度m

長度是n

他們最長的公共序列是3,2,5。

我們使用LCS(xi,yj)來表示Xi和yj的最長公共子序列的長度。

然後當xi =勇軍時,我們可以將xi和勇軍都向前移動以進行探索。

即LCS(Xi,yj)= LCS(Xi-1,yj-1)+1。

如果它們不相等,要麽將X向前移動壹步,要麽將Y向前移動壹步,看誰更大。

也就是說,LCS(Xi,yj)=馬克斯(LCS(Xi-1,yj),LCS(Xi,yj-1))

綜上所述如果xi == yj:

LCS(Xi,yj)= LCS(Xi-1,yj-1)+1

否則:

?LCS(Xi,yj)=馬克斯(LCS(Xi-1,yj),LCS(Xi,yj-1))

最長的子序列是什麽?

那麽讓我們回到源頭。

i = m-1,j = n-1

s =““

當我& gt= 0且j & gt= 0: ?#只要其中壹個為0就停止

如果xi == yj:

xi

否則:

如果LCS(Xi-1,yj)》LCS(Xi yj-1):

i -= 1

?否則:

j?-= 1

返回s【:::-1】

如果這是壹個連續的子問題。

讓我們改變思路,我們的重點應該是連續性。

事實上,如果妳畫壹個m*n的矩陣,這些連續的對角線上只有值,並且值是遞增的。

因此,我們可以用壹個不同角度的dp方程來表示。

DP【I】【j】= 0?如果i == 0?然後呢。j?==?0

DP【I】【j】= DP【I-1】【j-1?+?1 ?xi == yj

DP【I】【j】?=?0 xi!= yj