POJ 1548 (最長公共子串)

2021-07-17 03:55:10 字數 447 閱讀 5290

題意:求出兩個字串的最長公共子串,子串可以不是連續的,

思路:可以用乙個二維陣列儲存s1[ i ] 和s2[ j ]之前的最長子串長度(包括s1[ i ] 和s2[ j ])。

那麼其實問題顯而易見的分成了兩種情況s1[ i ] 和s2[ j ]相等和不相等問題自然迎刃而解了。

dp的思想,分成子問題來優化。

#include#include#include#define m 1000

using namespace std;

char sz1[m+10],sz2[m+10];

int amaxlen[m+10][m+10];

int main()

printf("%d\n",amaxlen[nlength1][nlength2]);

}return 0;

}

poj 最長公共子串行和最長公共子串

最長公共子串行 poj1458 問題描述 給出兩個字串,求出這樣的乙個最長的公共子串行的長度 子串行中的每個字元都能在兩個原串中找到,而且每個字元的先後順序和原串中的先後順序一致。sample input abcfbc abfcab programming contest abcd mnp samp...

最長公共子串行 最長公共子串

1 最長公共子串行 採用動態規劃的思想,用乙個陣列dp i j 記錄a字串中i 1位置到b字串中j 1位置的最長公共子串行,若a i 1 b j 1 那麼dp i j dp i 1 j 1 1,若不相同,那麼dp i j 就是dp i 1 j 和dp i j 1 中的較大者。class lcs el...

最長公共子串行 最長公共子串

1.區別 找兩個字串的最長公共子串,這個子串要求在原字串中是連續的。而最長公共子串行則並不要求連續。2 最長公共子串 其實這是乙個序貫決策問題,可以用動態規劃來求解。我們採用乙個二維矩陣來記錄中間的結果。這個二維矩陣怎麼構造呢?直接舉個例子吧 bab 和 caba 當然我們現在一眼就可以看出來最長公...