Ocena użytkownikóww: ***** / 1
Nadesłany przez Tomasz Lubiński, 26 lipca 2005 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.
Algorytm GS' - Delphi/Algorytm_GS.dpr:
//www.algorytm.org
//Algorytm GS' - wersja algorytmu Galila-Seiferasa dla pewnej klasy wzorców
//(c)2002 Tomasz Lubiński
program Algorytm_GS;
uses
Forms,
Math,Sysutils;
{$R *.RES}
{$Apptype console}
var
m,n,i,j:Integer;
wzorzec:String;
tekst:String;
begin
writeln('Podaj tekst');
readln(tekst);
writeln('Podaj wzorzec (pamietaj, ze musi to by wzorzec latwy)');
readln(wzorzec);
n:=length(tekst);
m:=length(wzorzec);
i:=1;
writeln('Indeksy poczatkow wzorca w tekscie');
while i<=n-m+1 do
begin
j:=0;
while ((j<m)and(wzorzec[j+1]=tekst[i+j])) do j:=j+1;
if j=m then writeln((IntToStr(i)));
i:=i+max(1,ceil(j/3));
end;
readln;
end.