最長公共子串行問題
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個非空串的最長公共子串行的...