动规两个字符串 最长的公共子串

来源:百度知道 编辑:UC知道 时间:2024/06/04 07:09:32
动规pascal程序;求两个字符串最长的公共子串,不用连续,给出代码
例:A串abcdjfg
b串bcdlig
公共 bcdg

var
a,b,c,f:array[1..100000]of longint;
i,j,k,n,max:longint;
procedure init;
var
i,j:integer;
begin
readln(n);
for i:=1 to n do
begin
read(a[i]);
c[a[i]]:=i;
end;
for i:=1 to n do
begin
read(b[i]);
b[i]:=c[b[i]];
end;
end;
begin
init;
for i:=1 to n do
f[i]:=1;
for i:=2 to n do
for j:=i-1 downto 1 do
if (f[i]<=f[j])and(b[i]>=b[j])
then f[i]:=f[j]+1;
for i:=1 to n do
if f[i]>max then max:=f[i];
writeln(max);
end.