編寫乙個程式,對輸入的字串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...