Форум программистов, компьютерный форум CyberForum.ru
Наши страницы

Алгоритм Кнута, Морриса и Пратта - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Описать основные переменные и функции http://www.cyberforum.ru/cpp-beginners/thread757763.html
опишите пожалуйста основные переменные и функции. очень буду благадарна #include <cstdlib> #include <iostream> #include <string> #include <locale.h>
C++ Перегрузить для класса оператор == (много ошибок) не могу разабраться в чем ошибки при компиляции... помогите пожалуйста код: #include "StdAfx.h" #include <conio.h> #include <string> #include <iostream> #include <fstream> #include <cstdlib> http://www.cyberforum.ru/cpp-beginners/thread757745.html
Напишите програму которая разработает класси набор методов для модели заданного обьекта C++
Разработать класс, набор методов (конструктор, деструктор и указаны методы) для программной модели заданного объекта. Описание объекта и его основных свойств приводится ниже. Привести программу (int...
C++ Файлы. Дописать в начало каждой строки
Здравствуйте Сделайте, пожалуйста, программу, которая будет добавлять +7 к номеру в списке Т.е. имеется txt файл с телефонными номерами списком: 9858256773 9304302502 9281133881 9296642107...
C++ Проблма с #include http://www.cyberforum.ru/cpp-beginners/thread757640.html
Добрый день. Есть два класса, например A и B. Эти классы независимы друг от друга. В заголовочном файле класса А делаю: #include "B.h". Теперь я могу использовать все фичи класса B, например так:...
C++ Перемешивание списка фамилий Есть список участников забега, допустим 10 фамилий. мне надо, случайно определить кто выйдет на старт 1, кто вторым, и т.д. Т.е вводим десять фамилий , нажимаем Enter, и он выводит их в другом... подробнее

Показать сообщение отдельно
rostik123456789
0 / 0 / 0
Регистрация: 30.09.2012
Сообщений: 25

Алгоритм Кнута, Морриса и Пратта - C++

10.01.2013, 15:42. Просмотров 2910. Ответов 3
Метки (Все метки)

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
//описание функции алгоритма Кнута, Морриса и Пратта
int KMPSearch(char *string, char *substring){
  int  sl, ssl;
  int res = -1;
  sl = strlen(string);
  ssl = strlen(substring);
  if ( sl == 0 ) 
    cout << "Неверно задана строка\n"; 
  else if ( ssl == 0 ) 
    cout << "Неверно задана подстрока\n"; 
  else {
    int  i, j = 0, k = -1;
    int  *d;
    d = new int[1000];
    d[0] = -1;
    while ( j < ssl - 1 ) {
      while ( k >= 0 && substring[j] != substring[k] ) 
        k = d[k];
      j++;
      k++;
      if ( substring[j] == substring[k] )
        d[j] = d[k];
      else 
        d[j] = k;
    }
    i = 0;
    j = 0;
    while ( j < ssl && i < sl ){
      while ( j >= 0 && string[i] != substring[j] )
        j = d[j];
      i++;
      j++;
    }
    delete [] d;
    res =  j == ssl ? i - ssl : -1;
  }
  return res;
}
Может кто-то объяснить что и как происходит в этом коде, я почему-то не очень понимаю, но хочу понять, что происходит в коде.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru