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

Прокомментируйте программу, пожалуйста - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Преобразовать массив так, чтобы вначале шли отрицательные элементы, а потом положительные http://www.cyberforum.ru/cpp-beginners/thread1311994.html
ГЛАВНОЕ!!! порядок отрицательных прежний , а положительных обратный
C++ Задача для С++ В одномерном массиве, состоящем из n целых элементов, вычислить: 1.) минимальный по модулю элемент массива; 2.) сумму модулей элементов массива, расположенных после первого элемента,... http://www.cyberforum.ru/cpp-beginners/thread1311990.html
C++ Завершение компиляции с выдачей сообщения
Нужно после какого-то if'a завершать программу и выдавать сообщение, которое я захочу сам. Return, goto и т.д. не подходят) Слышал, что есть препроцессор error, но нормальных примеров не нашел. Если...
Обработка строк C++
Есть задание: Написать консольное приложение, реализующее полученный вариант задания, используя конструкции и соответствующие функции стандартной библиотеки языка С. Ввести с клавиатуры символьную...
C++ Сохранить все нулевые элементы, расположенные в верхней части матрицы http://www.cyberforum.ru/cpp-beginners/thread1311964.html
Разработать способ экономного хранения в памяти разреженных матриц ( таблиц ) , разработать процедуры и функции для обеспечения доступа (чтение - запись) к элементам матрици- . . В контрольном...
C++ Из паскаля в c++ с небольшим изменением Ребят помогите написать прогу на с++, а так же переделать под файлы. (Само задание:Пусть дан файл целых чисел. Создайте новый файл, значения в который записываются по следующему правилу: суммируются... подробнее

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

Прокомментируйте программу, пожалуйста - C++

26.11.2014, 21:21. Просмотров 119. Ответов 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
30
31
32
33
34
35
36
37
38
39
40
char t[500005], p[250005];
int fl[500005];
 
void pre () {
    fl[0] = fl[1] = 0;
    for (i = 2; i<n; i++) 
    {
        fl[i] = fl[i-1]; 
        while(fl[i] && p[fl[i]] != p[i-1])
            fl[i] = fl[fl[i]];
        if (p[fl[i]] == p[i-1]) 
            fl[i]++;
    }
    if (p[fl[i]] == p[i-1]) 
        fl[i]++;
}
 
int match () {
    for (int j = 0, cp = 0; j<2*n; j++) {
        while(cp && p[cp] != t[j])
            cp = fl[cp];
        if (p[cp] == t[j] && ++cp == i) {
            cp = fl[i];
            return j + 1 - i;
        }
    }
    return -1;
}
int main()
{
    scanf_s("%d",&n);
    getchar();
    gets_s(p);
    gets_s(t);
    strncpy(t+n,t,n);
    pre ();
    printf ("%d\n", match ());
    system("pause");
    return 0;
}
или напишите примерный алгортм
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru