最長公共子串問題 LCS

2022-04-10 01:57:37 字數 1005 閱讀 3475

/*

題目描述:最長公共字串問題(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...