Помощь - Поиск - Пользователи - Календарь
Полная версия: алгоритм Бойера-Мура
Форум «Всё о Паскале» > Pascal, Object Pascal > Задачи
Tan
Help!помогите с алгоритмом Бойера-Мура!Лаба горит...
AlaRic
http://algolist.manual.ru  
Slam
Цитата

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

Забыл наверное !!!
___ALex___
Код
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
Это текстовая версия — только основной контент. Для просмотра полной версии этой страницы, пожалуйста, нажмите сюда.