Форум программистов, компьютерный форум, киберфорум
Наши страницы
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
Анна Хофман
0 / 0 / 1
Регистрация: 24.11.2014
Сообщений: 30
1

Помогите разобраться в коде

07.02.2015, 06:11. Просмотров 258. Ответов 1
Метки нет (Все метки)

Помогите мне разобраться в коде. Заранее спасибо.
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
int seek_substring_KMP (char s[], char p[])
{
    int i, j, N, M;
    N = strlen(s);
    M = strlen(p);
    int *d =(int*)malloc(M*sizeof(int));
    d[0]=0;
    for(i=1,j=0;i<M;i++)
    {
        while(j>0 && p[j]!=p[i])
            j = d[j-1];
        if(p[j]==p[i])
            j++;
        d[i]=j;
    }
    /* поиск */
    for(i=0,j=0;i<N; i++)
    {
        while(j>0 && p[j]!=s[i])
            j=d[j-1];
        if(p[j]==s[i])
                        j++;
        if (j==M)
                {
                free (d); 
                        return i-j+1;
                }
    }
        free (d);
    return -1;
}
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
07.02.2015, 06:11
Ответы с готовыми решениями:

ПОМОГИТЕ РАЗОБРАТЬСЯ В КОДЕ
#include &lt;time.h&gt; #include &lt;conio.h&gt; #include &lt;iostream&gt; #include &lt;assert.h&gt; #include...

Морской бой. Помогите разобраться в коде
Мне знакомый написал игру морской бой. А пояснение не написал. И пропал. А при сдаче препод тыкнет...

Вычисление суммы четных и нечетных элементов. Помогите разобраться в коде
Здравствуйте! Вот изучаю язык C++. Есть программа, которая вычисляет сумму четных и нечетных...

Помогите разобраться в коде программы для переворачивания списка (код маленький)
Программа которая переворачивает список L, изменяет ссылки в этом списке так, чтобы его элементы...

Разобраться в коде
Алгоритм сортирует элементы матрицы согласно схеме (см. изображение), в порядке убывания и методом...

1
Renji
2114 / 1552 / 473
Регистрация: 05.06.2014
Сообщений: 4,505
07.02.2015, 07:51 2
Алгоритм Кнута — Морриса — Пратта. Вообще, лучше вникать с красивой диаграмкой. Если на пальцах:
1) Алгоритм просматривает символ в позиции X.
2) Известно (из предыдущего поиска) что перед позицией X стоит Y первых символов образца поиска. Скажем, "abcabc", Y=6.
3) Но с тем же успехом я могу сказать что перед позицией X стоит Z первых символов образца поиска ("abc", Z=3).
4) Если символ в позиции X совпал с образцом, значит Y увеличиваем на единичку.
5) Если символ в позиции X НЕ совпал с образцом, но Y заменяется на Z. Имею полное право (смотри пункт 3). Далее возвращаемся к шагу два.
Ну а тот массив d, это таблица перевода Y в Z.
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
07.02.2015, 07:51

нужно разобраться в коде
Определить минимальный положительный элемент главной диагонали матрицы А(5,5) и заменить все...

Не могу разобраться в коде
Здравствуйте, нашел код на форуме, он выводит файл в hex виде #include &lt;iostream&gt; #include...

Разобраться в коде программы
помогите пожалуйста разобраться на примере этого текста подробно gil bil pes #include &lt;stdio.h&gt;...


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

Или воспользуйтесь поиском по форуму:
2
Ответ Создать тему
Опции темы

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