Ocena użytkownikóww: ***** / 1
Nadesłany przez Tomasz Lubiński, 18 stycznia 2007 01:00
Kod przedstawiony poniżej przedstawia główną część rozwiązania problemu.
Pobierz pełne rozwiązanie.Jeżeli nie odpowiada Ci sposób formatowania kodu przez autora skorzystaj z pretty printer'a i dostosuj go automatycznie do siebie.
podtekst.dpr:
//Najdluzsze wspolne podslowo
//www.algorytm.org
//(c)2007 Tomasz Lubinski
program podtekst;
{$APPTYPE CONSOLE}
uses
SysUtils, Math;
var
s1,s2 : String;
m,n,maxi,ind,i,j : Integer;
a: array of array of Integer;
begin
writeln('Podaj pierwszy ciag');
readln(s1);
writeln('Podaj drugi ciag');
readln(s2);
m := length(s1);
n := length(s2);
maxi := 0;
ind := 0;
setLength(a, max(m,n)+1);
for i:=0 to max(m,n) do
begin
setLength(a[i], max(m,n)+1);
end;
for i:=0 to max(m,n) do
begin
a[0,i] := 0;
a[i,0] := 0;
end;
for i:=1 to m do
for j:=1 to n do
if s1[i] <> s2[j] then
a[i,j] := 0
else
begin
a[i,j] := a[i-1,j-1]+1;
if a[i,j] > maxi then
begin
maxi := a[i,j];
ind := i;
end;
end;
writeln('Najdluzszy wspolny podciag ma dlugosc ' + IntToStr(maxi));
if maxi <> 0 then
begin
write('Jest to: ');
for i:=1 to maxi do
write(s1[ind+i-maxi]);
end;
readln;
end.