公共子串
題意
設有A、B兩個字符串,找出A、B共同子串,每個字符串無相同字符,可以不連續,但順序不能顛倒。
分析
if s1[i]=s2[j] then f[i,j]:=f[i-1,j-1]+1 else f[i,j]:=max(f[i-1,j],f[i,j-1]);
var
s1,s2:string;
l1,l2,i,j:longint;
f:array[0..300,0..300]of longint;
function max(x,y:longint):longint;
begin
? ? if x>y then exit(x) else exit(y);
end;
begin
? ? readln(s1);
? ? readln(s2);
? ? l1:=length(s1);
? ? l2:=length(s2);
? ? fillchar(f,sizeof(f),0);
? ? for i:=1 to l1 do
? ? for j:=1 to l2 do
? ? begin
? ? ? ? if s1[i]=s2[j] then f[i,j]:=f[i-1,j-1]+1 else f[i,j]:=max(f[i-1,j],f[i,j-1]);
? ? end;
? ? write(f[l1,l2]);
end.
轉載于:https://www.cnblogs.com/YYC-0304/p/9500166.html
總結