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

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

Восстановить пароль Регистрация
Другие темы раздела
C++ Интеллект компьютера в игре Крестик-Нолик http://www.cyberforum.ru/cpp-beginners/thread1136395.html
вот написал себе игру крестик нолик. Все нормально получилось. Просто вот не могу объяснить компьютеру как правильно думать. У меня есть схема тактики в игре. Вот: А вот и сам код #include "stdafx.h" #include <iostream> #include <Windows.h> #include <time.h> using namespace std;
C++ Выполнить сортировку по убыванию. Пирамидальная сортировка Выполнить сортировку по убыванию. Пирамидальная сортировка и сортировка слияния. Размерность массива меняется от 10 до 100 шагом 10. Массив заполнен случайным образом (неупорядочен). template< class T > void downHeap(T a, long k, long n) { // процедура просеивания следующего элемента // До процедуры: a...a - пирамида // После: a...a - пирамида T new_elem; http://www.cyberforum.ru/cpp-beginners/thread1136392.html
C++ Проверить что цифры данного трехзначного числа образуют возрастающую последовательность
1 Проверить истинность высказывания: "Цифры данного трехзначного числа образуют возрастающую последовательность" помогите написать программу :( Добавлено через 29 минут Что не кто не знает? мне надо с операторами if , else
Определить попадание произвольной точки в заштрихованную область C++
Помогите пожалуйста, не могу сделать эту задачу (С++)
C++ Определить количество элементов файла, величина которых меньше среднего арифметического всех элементов данного файла http://www.cyberforum.ru/cpp-beginners/thread1136309.html
В файле находятся вещественные числа. Определить количество элементов файла, величина которых меньше среднего арифметического всех элементов данного файла. Мой код, который следует дополнить, пока выглядит вот так: #include <stdio.h> #include <conio.h> int main() { int n,i; float m; char str,str1,ch;
C++ Вычислить значение заданной функции y = f(x) на данном интервале [a,b] с заданным шагом \Delta x Вычислить значение заданной функции y = f(x) на данном интервале с заданным шагом \Delta X y=ln\frac{x+1}{x} x\epsilon \Delta x=0.5 Напишите программу пожалуйста =* подробнее

Показать сообщение отдельно
ZaMaZaN4iK
Мой лучший друг-отладчик!
 Аватар для ZaMaZaN4iK
163 / 163 / 9
Регистрация: 24.06.2012
Сообщений: 662
Записей в блоге: 5
Завершенные тесты: 1
02.04.2014, 08:19     Алгоритм КМП(Кнута-Морриса-Пратта )
Advin, если вам дана сама последовательность, то что Вам мешает запихнуть её в строку, а потом посчитать префикс-функцию и использовать её значение?
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
void kmp(vector <int> &p)
{
    for(i=1;i<size;++i)
    {
        j=p[i-1];
        while(j>0 && s[i] != s[j])
            j=p[j-1];
        if(s[i] == s[j])
            ++j;
        p[i]=j;
    }
}
 
void search_in_str(vector<int> &p)//нахождение подстроки в строке
{
    s=s_pref+"$"+s_main;
    size=s.length();
    size_pref=s_pref.length();
    kmp(p);
    for(i=0;i<size;++i)
        if(p[i] == size_pref)
            cout<<i-2*size_pref;//2*size_pref заранее рассчитать
}
 
Текущее время: 20:00. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru