1006 最長公共子串行Lcs

2021-08-09 08:46:10 字數 1066 閱讀 4626

基準時間限制:1 秒 空間限制:131072 kb 分值: 0 

難度:基礎題

給出兩個字串a b,求a與b的最長公共子串行(子串行不要求是連續的)。

比如兩個串為:

abcicba

abdkscab

ab是兩個串的子串行,abc也是,abca也是,其中abca是這兩個字串最長的子串行。

input

第1行:字串a

第2行:字串b

(a,b的長度 <= 1000)

output

輸出最長的子串行,如果有多個,隨意輸出1個。
input示例

abcicba

abdkscab

output示例

abca

1/*2

記錄一下dp是怎麼走的

3最後再dfs走回去 4*/

5 #include 6 #include 7 #include 8

9const

int maxn=1010;10

11char

s1[maxn],s2[maxn];

1213

intf[maxn][maxn],pre[maxn][maxn];

1415 inline void read(int&x)

2021 inline int max(int x,int

y) 24

25void dfs(int len1,int

len2)

31else

if(pre[len1][len2]==2) dfs(len1-1

,len2);

32else dfs(len1,len2-1

);33}34

35int

main()

44else

if(f[i-1][j]>f[i][j-1

])48

else52}

53dfs(l1,l2);

54return0;

55 }

**

1006 最長公共子串行Lcs

給出兩個字串a b,求a與b的最長公共子串行 子串行不要求是連續的 比如兩個串為 abcicba abdkscab ab是兩個串的子串行,abc也是,abca也是,其中abca是這兩個字串最長的子串行。input 第1行 字串a 第2行 字串b a,b的長度 1000 output 輸出最長的子串行...

1006 最長公共子串行Lcs

給出兩個字串a b,求a與b的最長公共子串行 子串行不要求是連續的 比如兩個串為 abcicba abdkscab ab是兩個串的子串行,abc也是,abca也是,其中abca是這兩個字串最長的子串行。input 第1行 字串a 第2行 字串b a,b的長度 1000 output 輸出最長的子串行...

1006 最長公共子串行Lcs

給出兩個字串a b,求a與b的最長公共子串行 子串行不要求是連續的 比如兩個串為 abcicba abdkscabab是兩個串的子串行,abc也是,abca也是,其中abca是這兩個字串最長的子串行。收起第1行 字串a 第2行 字串b a,b的長度 1000 輸出最長的子串行,如果有多個,隨意輸出1...