Форум по Delphi программированию

Delphi Sources



Вернуться   Форум по Delphi программированию > Все о Delphi > [ "Начинающим" ]
Ник
Пароль
Регистрация <<         Правила форума         >> FAQ Пользователи Календарь Поиск Сообщения за сегодня Все разделы прочитаны

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 17.12.2009, 18:35
Crazy_Gamer Crazy_Gamer вне форума
Прохожий
 
Регистрация: 12.12.2009
Сообщения: 2
Репутация: 10
По умолчанию Алгоритм Кнута-Морриса-Пратта

Здравствуйте! Подскажите пожалуйста, алгоритм расчета массива сдвигов в алгоритме Кнута-Морриса-Пратта (поиск первого вхождения слова в текст). Нашел несколько статей, но там как-то непонятно все, никак не могу разобраться
Ответить с цитированием
  #2  
Старый 18.12.2009, 01:02
Аватар для Electronic_Arts
Electronic_Arts Electronic_Arts вне форума
Местный
 
Регистрация: 13.07.2006
Адрес: на земле
Сообщения: 562
Версия Delphi: Delphi 11
Репутация: 18
По умолчанию

Код:
Function pos (t,p : String) : integer;
 var F : array[0..len] of integer;
     k,i : integer;
 {t - подстрока;p - соотвественно строка}
 {len - сумма длин строки и подстроки }
 begin
  F[1] := 0;
  k := 0;
  For i := 2 to length(T) do
   begin
    While (k > 0) and (T[k+1] <> T[i]) do
      k := F[k];
    if T[k+1] = T[i] Then
      Inc(k);              {функция Inc от числа сопоставима со строчкой число:=число+1}
    F[i] := k;
   end;
  k := 0;
  For i := 1 to length(P) do
   begin
    While (k > 0) and ( T[k+1] <> P[i]) do
      k := F[k];
    if T[k+1] = T[i] Then
      Inc(k);
    if k = length(T) Then
      Begin
       pos := i+length(t);
       {Здесь обрабатываются полученные данные после того как мы нашли подстроку,
        можно сделать результатом работы функции не только положение подстроки}
       Break
      End;
   end;
 end;
Ответить с цитированием
Ответ


Delphi Sources

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра
Комбинированный вид Комбинированный вид

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Часовой пояс GMT +3, время: 03:03.


 

Сайт

Форум

FAQ

Соглашения

Прочее

 

Copyright © Форум "Delphi Sources" by BrokenByte Software, 2004-2025