Codeup 問題 A 最長公共子串行

2021-09-13 03:55:52 字數 731 閱讀 1383

給你乙個序列x和另乙個序列z,當z中的所有元素都在x中存在,並且在x中的下標順序是嚴格遞增的,那麼就把z叫做x的子串行。

例如:z=是序列x=的乙個子串行,z中的元素在x中的下標序列為<1,2,4,6>。

現給你兩個序列x和y,請問它們的最長公共子串行的長度是多少?

輸入包含多組測試資料。每組輸入佔一行,為兩個字串,由若干個空格分隔。每個字串的長度不超過100。

對於每組輸入,輸出兩個字串的最長公共子串行的長度。

abcfbc abfcab

programming contest

abcd mnp

4

20

ac:

#include #include #include using namespace std;

const int maxn = 105;

char a[maxn], b[maxn];

int dp[maxn][maxn];

int n;

int main()

for(int j = 0 ; j <= lenb; j++)

for(int i = 1; i <= lena; i++)

else

}} printf("%d\n", dp[lena][lenb]); }

return 0;

}

最長公共子串問題

給定兩個字串str1和str2,返回兩個字串的最長公共子串。要求時間複雜度為o m n 額外空間複雜度為o 1 的方法。一開始想用kmp演算法解決此題,但是眾所周知kmp演算法需要next陣列,那麼空間複雜度肯定是o n 了。後來想到了遞迴的方法。剛好滿足題目的要求。public string th...

最長公共子串問題

給出兩個字串,求這兩個字串的公共子串。還有乙個類似的問題是兩字串的公共子串行,有待分析 例子 input abcdefg gdefacd output def使用動態規劃法,相當於用空間換時間。將乙個複雜的大問題,分解為較為簡單的子問題,最重要的步驟就是推導狀態轉移公式。現有兩個字串,x x1,x2...

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

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...