最長公共子串行問題(LCS簡單dp)

2021-09-11 22:26:16 字數 573 閱讀 7732

problem description

給定兩個序列 x= 和 y=,找出x和y的最長公共子串行。

input

輸入資料有多組,每組有兩行 ,每行為乙個長度不超過500的字串(輸入全是大寫英文本母(a,z)),表示序列x和y。

output

每組輸出一行,表示所求得的最長公共子串行的長度,若不存在公共子串行,則輸出0。

sample input

abcbdab

bdcaba

sample output

4
hint

source

題解:若s1[i]==s2[j],則dp[i+1][j+1]=dp[i][j]+1;

否則dp[i+1][j+1]=max(dp[i][j+1],dp[i+1][j]);

迴圈一遍即可;

#includeusing namespace std;

int dp[505][505];

int main()

}cout<}

return 0;

}

D 最長公共子串行Lcs

給出兩個字串a b,求a與b的最長公共子串行 子串行不要求是連續的 比如兩個串為 abcicba abdkscab ab是兩個串的子串行,abc也是,abca也是,其中abca是這兩個字串最長的子串行。input第1行 字串a 第2行 字串b a,b的長度 1000 output輸出最長的子串行,如...

最長公共子串行(LCS)問題

問題描述 見演算法導論p208 p209 前提概念 給定乙個序列x x1,x2,xm 對i 0,1,m,記x的第i個字首為xi x1,x2,xi 故xm x,而x0是個空序列 乙個給定序列的子串行就是該序列去掉0個或多個元素 不一定連續 如bcdb是abcbdab的乙個子串行 基於以上定義,最長公共...

最長公共子串行問題LCS

乙個給定序列的子串行是指在原序列順序不變的基礎上刪去若干元素後得到的序列。給定兩個序列x和y,當乙個序列z既是x的子串行又是y的子串行時,稱z序列為x和y 的公共子串行。例如,x a,b,c,b,d,a,b y b,d,c,a,b,a 則序列 b,c,a 是x和y的乙個公共子串行,但不是x和y的最長...