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

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Marlboro_August
0 / 0 / 0
Регистрация: 05.03.2014
Сообщений: 9
#1

Разъясните КМП алгоритм - C++

20.11.2014, 04:28. Просмотров 173. Ответов 0
Метки нет (Все метки)

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
int algorithm_KMP (char s[], char q[])
    { 
    int  i=0, j=-1, N, M; 
    N = strlen(s); 
    M = strlen(q); 
    int *d =(int*)malloc(M*sizeof(int)); 
    d[0]=-1;
    while(i<M-1)
        {
        while((j>=0) && (q[j]!=q[i]))
        j = d[j];
        i++;
        j++;
 
        if(q[i]==q[j])
            d[i]=d[j];
        else
            d[i]= j;
        }
 
    for(i=0,j=0;(i<N)&&(j<M); i++,j++)
        while((j>=0)&&(q[j]!=s[i]))
            j=d[j];
    free (d);   
    if (j==M)
        return i-j;
    else
        return -1;
    }
Объясните, пожалуйста, этот код
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
20.11.2014, 04:28     Разъясните КМП алгоритм
Посмотрите здесь:

Алгоритм КМП(Кнута-Морриса-Пратта ) - C++
нужно с помощью алгоритма КМП найти первое вхождение одной числовой последовательности в другую ... не сроки! спасибо

Списки разъясните - C++
Совсем недавно начал изучать списки и всё никак не могу понять, как их реализовывать правильно в си. Собственно код написал ниже, но вот ...

Разъясните код - C++
Здравствуйте! Расскажите, пожалуйста, что обозначает это, почему вообще так пишется: #define STATE(name) DWORD WINAPI name(DWORD...

Разъясните пожалуйста - C++
int sd(int n, int d = 1) { if(n == 0) { return 0; } else { return d &lt;= n ? (n % d == 0...

Разъясните задание - C++
Сформировать динамический массив, состоящий из динамических строк. (Это я понял как сделать). Но нужно еще &quot;Добавить строку с заданным...

Разъясните задание - C++
Есть файл(.txt) с символами,нужно следующее сделать Записать в новый файл символы из исходного, преобразованные следующим образом:...

Функция get() разъясните ситуацию - C++
#include&lt;iostream&gt; #include&lt;fstream&gt; using namespace std; int main() { setlocale(LC_CTYPE, &quot;russian&quot;); char...

Форумчане разъясните #pragma once) - C++
#pragma once и #ifndef Variables_h_ #define Variables_h_ .... #endif это что одно и тоже? первый вариант свежий а второй...

Разъясните пожалуйста задачу - C++
Вот задача. #include &lt;iostream&gt; using namespace std; const int n=3; struct STRUCT { char fio; int phone; int...

Разъясните пожалуйста (классы) - C++
1. Зачем в следующем коде в 1 строке стоит амперсанд? 2. Что значит RHS и когда его использовать? 3. Зачем стоит звездочка в 6 строке...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru