基準時間限制:1 秒 空間限制:131072 kb 分值: 0
難度:基礎題
給出兩個字串a b,求a與b的最長公共子串行(子串行不要求是連續的)。
比如兩個串為:
abcicba
abdkscab
ab是兩個串的子串行,abc也是,abca也是,其中abca是這兩個字串最長的子串行。
input
第1行:字串aoutput第2行:字串b
(a,b的長度 <= 1000)
輸出最長的子串行,如果有多個,隨意輸出1個。input示例
abcicbaoutput示例abdkscab
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...