公共子串(動態規劃)

2021-07-11 02:00:05 字數 979 閱讀 7344

description

設有a、b兩個字串,找出a、b共同子串,每個字串無相同字元,可以不連續,但順序不能顛倒。

input

第一行字串a 

第二行字串b 

output

最長公共子串的長度.

sample input

abcfbc

abfcab

sample output

4
解題思路:
c[i,j]表示序列x[i]和y[i]的最長公共子串行的長度,狀態轉移方程為:
c[i,j]=,,|x<>y}}
(1<=i<=lenx,1<=j<=leny)
c[lenx,leny]即為所求。
時間複雜度:o(n^2)
程式:
const

maxlen=200;

var i,j:longint;

c:array[0..maxlen,0..maxlen]of longint;

x,y,z:string;

begin

readln(x);

readln(y);

for i:=1 to length(x) do

for j:=1 to length(y) do

if x[i]=y[j] then c[i,j]:=c[i-1,j-1]+1

else if c[i-1,j]>c[i,j-1] then c[i,j]:=c[i-1,j]

else c[i,j]:=c[i,j-1];

i:=length(x);

j:=length(y);

writeln(c[i,j]);

end.

版權屬於: chris

最長公共子串 最長公共子串 動態規劃

有兩個字串 可能包含空格 請找出其中最長的公共連續子串,輸出其長度。長度在1000以內 例如 輸入 abcde bcd 輸出 3 1 把兩個字串分別以行和列組成乙個二維矩陣。2 比較二維矩陣中每個點對應行列字元中否相等,相等的話值設定為1,否則設定為0。3 通過查詢出值為1的最長對角線就能找到最長公...

最長公共子串(動態規劃)

描述 計算兩個字串的最大公共子串 longest common substring 的長度,字元不區分大小寫。輸入 輸入兩個字串 輸出 輸出乙個整數 樣例輸入 asdfas werasdfaswer樣例輸出 6 參考 這裡的最大公共字串要求的字串是連續的。求字串的方法和求子序列方法類似 當s i t...

最長公共子串 動態規劃

題目 給定乙個字串 s,找到 s 中最長的回文子串。你可以假設 s 的最大長度為1000。示例 輸入 babad 輸出 bab 注意 aba 也是乙個有效答案。思想 動態規劃 步驟 第一步 確定子問題。在這一步重點是分析那些變數是隨著問題規模的變小而變小的,那些變數與問題的規模無關。第二步 確定狀態...