最長公共子串行LCS DP

2021-08-02 21:22:20 字數 1329 閱讀 8013

是指按順序從兩個字串中獲取的公共包含的元素集合。

abcdfd

annbmmf

abf就是

把乙個大問題規劃成好幾個同樣的子問題,然後分別求解。

/* 輸出字串 */

public

static

void

getlcstring(string x,string y,int c)else

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

if(c[i-1][j] < c[i][j-1])}}

public

static

void

main(string args)

}

000

0000

0000

0111

1011

1122

2011

2222

2011

2233

3012

2233

3012

2334

4012

2344

4012

2344

4012

2344

4012

2344

4012

2344

4012

2344

4012

2344

4012

2344

4012

2344

5 [[i@1db9742

element: r i: 15 j: 7

element: a i: 6 j: 6

element: b i: 4 j: 5

element: c i: 3 j: 3

element: b i: 2 j: 1

-----end---

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

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

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

1.區別 找兩個字串的最長公共子串,這個子串要求在原字串中是連續的。而最長公共子串行則並不要求連續。2 最長公共子串 其實這是乙個序貫決策問題,可以用動態規劃來求解。我們採用乙個二維矩陣來記錄中間的結果。這個二維矩陣怎麼構造呢?直接舉個例子吧 bab 和 caba 當然我們現在一眼就可以看出來最長公...

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

子串要求連續 子串行不要求連續 之前的做法是dp求子序列 include include include using namespace std const int inf 0x3f3f3f3f const int mod 1000000007 string s1,s2 int dp 1010 10...