/*題目描述:最長公共字串問題(lcs)。如果字串一的所有字元按其順序出現在另外乙個字串二中,
則字串一稱之為字串二的字串。注意,並不要求子串(字串一)的字元連續出現在字串二中。
請編寫乙個函式,輸入兩個字串,求它們的最長公共子串,並列印其中任意乙個最長公共子串。
例如:bdcaba和abcbdab,字串bcba和bdab都是它們的最長公共子串。
*/#include
#include
#include
#include
using
namespace
std;
const
int n = 100
;const
int left_up = 1
;const
int left = 2
;const
int up = 3
;int
f[n][n],path[n][n];
void initdata(int len1, int
len2)}//
求str1和str2的lcs
int findlcs(char str1, int len1, char str2, int
len2)
else
if(f[i-1][j] >= f[i][j-1
])
else
}return
f[len1][len2];}//
逆序列印lcs。
void printlcs(char str1,int len1, char str2, int
len2)
else
if(path[i][j] =up)
i--;
else
j--;
}}int
main()
最長公共子串LCS
找兩個字串的最長公共子串,這個子串要求在原字串中是連續的。其實這又是乙個序貫決策問題,可以用動態規劃來求解。我們採用乙個二維矩陣來記錄中間的結果。這個二維矩陣怎麼構造呢?直接舉個例子吧 bab 和 caba 當然我們現在一眼就可以看出來最長公共子串是 ba 或 ab b a b c 0 0 0 a ...
最長公共子串(LCS)
找兩個字串的最長公共子串,這個子串要求在原字串中是連續的。其實這又是乙個序貫決策問題,可以用動態規劃來求解。我們採用乙個二維矩陣來記錄中間的結果。這個二維矩陣怎麼構造呢?直接舉個例子吧 bab 和 caba 當然我們現在一眼就可以看出來最長公共子串是 ba 或 ab b a b c 0 0 0 a ...
LCS(最長公共子串)系列問題
探索遞迴模式下,電腦最長計算的長度情況。我也很神秘,為什麼老師要出這種問題。就是不斷修改下面的n,來看看數值就知道了 include using namespace std include string multiply string s,int time string x,y intlcs int...