Форум программистов, компьютерный форум 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 main), использующий объекты разработанного класса: Объект «рационально не сократимых дробь, представлен парой целых чисел». Конструктор должен позволить создавать объекты без и с начальной...
C++ Файлы. Дописать в начало каждой строки
Здравствуйте Сделайте, пожалуйста, программу, которая будет добавлять +7 к номеру в списке Т.е. имеется txt файл с телефонными номерами списком: 9858256773 9304302502 9281133881 9296642107 9664210720 9096916753 9167532006
C++ Проблма с #include http://www.cyberforum.ru/cpp-beginners/thread757640.html
Добрый день. Есть два класса, например A и B. Эти классы независимы друг от друга. В заголовочном файле класса А делаю: #include "B.h". Теперь я могу использовать все фичи класса B, например так: B *objOfClassB = new B(this); Т.к. я в конструктор передаю указатель на класс А, то в объекте objOfClassB нужно этим как-то воспользоваться. Например: B::B(B *parent) : QWidget(parent) { ...
C++ Перемешивание списка фамилий Есть список участников забега, допустим 10 фамилий. мне надо, случайно определить кто выйдет на старт 1, кто вторым, и т.д. Т.е вводим десять фамилий , нажимаем Enter, и он выводит их в другом порядке. Помогите пожалуйста. подробнее

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

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

10.01.2013, 15:42. Просмотров 2782. Ответов 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;
}
Может кто-то объяснить что и как происходит в этом коде, я почему-то не очень понимаю, но хочу понять, что происходит в коде.
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru