题目描述
写一个程序,给你两个字符串,计算最长的公共子串的长度。如果字符串s连续地出现在字符串t中,则称s是t的子串。
输入
输入有两行,每行一个字符串,字符串里的字符都是大写英文字母,长度不超过4000。
输出
输出一个整数表示公共子串的最长长度。
思路:
如果s1[i]=s2[j] f[i,j]=f[i-1,j]+f[i,j-1]+1;
var
s1,s2:ansistring;
f:array[0..4000,0..5000] of longint;
i,j,k,n,m,max:longint;
begin
assign(input,'common.in'); reset(input);
assign(output,'common.out'); rewrite(output);
readln(s1);
readln(s2);
for i:=1 to length(s1) do
for j:=1 to length(s2) do
begin
if s1[i]=s2[j] then f[i,j]:=f[i-1,j-1]+1;
if max
]]>

Comments NOTHING