题目描述
写一个程序,给你两个字符串,计算最长的公共子串的长度。如果字符串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