最長公共子串問題解答

2021-08-24 23:00:47 字數 565 閱讀 4686

編寫乙個程式,對輸入的字串s和t,求其最長的公共子字串。

【輸入形式】 從螢幕分行讀入串s和t。s和t由任意字元構成,長度都不超50個字元。輸入資料確保只有唯一的最長公共子串。如果沒有公共子串,列印no answer

【輸出形式】 在單獨行上輸出串s和串t的最長公共子串,在結尾輸出乙個回車符。

#include #include int b[50][50];

int c[50][50];

void lcs(x,m,y,n)

char *x;

int m;

char *y;

int n;

else

if (c[i-1][j] > c[i][j-1])

else

}}void show(i,j,x)

int i;

int j;

char* x;

else

if (b[i][j]==2)

show(i-1,j,x);

else

show(i,j-1,x);

}void main()  

最長公共子串問題

給定兩個字串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...