Версия для печати темы

Нажмите сюда для просмотра этой темы в обычном формате

Форум «Всё о Паскале» _ Задачи _ алгоритм Бойера-Мура

Автор: Tan 15.04.2003 9:59

Help!помогите с алгоритмом Бойера-Мура!Лаба горит...

Автор: AlaRic 15.04.2003 14:00

http://algolist.manual.ru  

Автор: Slam 15.04.2003 22:00

Цитата
http://algolist.manual.ru  

А где же коронная фраза:"В поисковиках всё есть!"? ;D

Автор: Clane 15.04.2003 23:06

Цитата
А где же коронная фраза:"В поисковиках всё есть!"? ;D

Забыл наверное !!!

Автор: ___ALex___ 16.04.2003 1:05

Код
function BMSearch(StartPos: Integer; const S, P: String): Integer;
type
TBMTable = array[0..255] of Integer;
var
Pos, lp, i: Integer;
BMT: TBMTable;
begin

for i := 0 to 255 do BMT[i] := Length(P);
for i := Length(P) downto 1 do if BMT[Byte(P[i])] = Length(P) then
BMT[Byte(P[i])] := Length(P) - i;

lp := Length(P);
Pos := StartPos + lp -1;
while Pos <= Length(S) do
if P[lp] <> S[Pos] then Pos := Pos + BMT[Byte(S[Pos])] else
if lp = 1 then begin Result := Pos; Exit; end else
for i := lp - 1 downto 1 do if P[i] <> S[Pos - lp + i] then
 begin
  Inc(Pos);
  Break;
 end else if i = 1 then
 begin
  Result := Pos - lp + 1;
  Exit;
 end;
Result := 0;

end;


не забудб спасибо сказать ;D