SDUT 2080 最長公共子串行問題

2021-08-19 15:15:11 字數 880 閱讀 7597

最長公共子串行問題

time limit: 1000 ms memory limit: 65536 kib

problem description

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

input

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

output

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

sample input

abcbdab

bdcaba

sample output

#include 

#include

#include

#include

#include

using

namespace

std;

int main()

return

0;}

1.首先,關於lcs問題,很多內容不做過多解讀,我們現在只是來強調一下簡單的思路

2.當,當ar==bt時,因為其是最後乙個,所以不管怎麼樣,其大值一定比ar-1,bt-1大1,這個概念是你要明確的。你可能說,前面可能與其對稱的數相等呢?這個結論我們也解釋過,就算最後乙個不用,在這種情況下也依舊+1,根本不存在加2的情況。。

3.關於函式陣列的建立,這裡是你需要明確的,我們要遞推,需要用前面的陣列,如果陣列出現負數,有不可預料的結果,所以,我們從1開始,但是,字串判斷,就i-1這種形式就好,就是這個樣子。

4.關於lcs問題,明確其遞推公式的求解方法,之後就很好解決了。

SDUT 2080最長公共子串行問題

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

2080最長公共子串行問題(DP)

給定兩個序列 x 和 y 找出x和y的最長公共子串行。輸入資料有多組,每組有兩行 每行為乙個長度不超過500的字串 輸入全是大寫英文本母 a,z 表示序列x和y。每組輸出一行,表示所求得的最長公共子串行的長度,若不存在公共子串行,則輸出0。inputabcbdab bdcabaoutput41 in...

SDUT 動態規劃 最長公共子串行

最長公共子串行 problem description 從乙個給定的串中刪去 不一定連續地刪去 0個或0個以上的字元,剩下地字元按原來順序組成的串。例如 a xb aaa bbb xabb xaaabbb 都是串 xaaabbb 的子串行。例子中的串不包含引號。程式設計求n個非空串的最長公共子串行的...