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

2021-10-04 10:59:00 字數 1002 閱讀 4080

求兩個字串的最長公共子串行。

#include

#include

using

namespace std;

const

int maxn=

100;

//x儲存第乙個序列,y儲存第二個序列,c儲存公共子串行的情況

//b記錄c的值是由哪乙個子問題的解得到的,用來構建最長公共子串行

void

lcslength

(int m,

int n,

char x[maxn]

,char y[maxn]

,int c[maxn]

[maxn]

,int b[maxn]

[maxn]

)for

(i=1

;i)for

(i=1

;i<=m;i++

)else

if(c[i-1]

[j]>=c[i]

[j-1])

else}}

}//根據之前所做的標記,遞迴尋找序列值

void

lcs(

int i,

int j,

char x[maxn]

,int b[maxn]

[maxn]

)else

if(b[i]

[j]==2)

lcs(i-

1,j,x,b)

;else

lcs(i,j-

1,x,b);}

intmain()

;char y=

;int c[maxn]

[maxn]

,b[maxn]

[maxn]

;int n=

7,m=6;

lcslength

(n,m,x,y,c,b)

;lcs

(n,m,x,b)

;}

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

最長公共子串行問題 longest common subsequence problem 簡稱lcs問題。題目為給定兩個序列x y求它們的lcs 最長公共子串行 這裡的子串行z的定義為 z中的元素既在x中也在y中,並且他們在x y中滿足嚴格的下標為乙個增序列 假設下標從左到右依次增大 另外,不要求z...

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

給定兩個字串s1s2.sn和t1t2.tn。求出這兩個字串最長的公共子串行 輸入 abcicba abdkscab 輸出 abca 定義dp i j 為s1 si和t1 tj對應的lcs的長度 s1 si 1和t1 tj 1對應的公共子列有三種情況 當si 1 tj 1時,在s1 si和t1 tj的...

最長公共子串行問題(動態規劃)

time limit 1000ms memory limit 65536kb problem description 給定兩個序列x input 輸入資料有多組,每組有兩行 每行為乙個長度不超過500的字串 輸入全是大寫英文本母 a,z 表示序列x和y。output 每組輸出一行,表示所求得的最長公...