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

Алгоритм Хоспула - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ кольцевой список. STL http://www.cyberforum.ru/cpp-beginners/thread298754.html
В общем, есть такая проблема. Нужно реализовать кольцевой список, удовлетворяющий требованиям STL. То есть, он должен работать со всеми алгоритмами. Вопрос в том, как реализовать метод end(), который должен возвращать элемент, следующий за последним. И при этом, для итератора, указывающего на последний элемент, it++ должен возвращать итератор на первый элемент.
C++ Найти сумму элементов массива с нечетными номерами помогите пожалуйста с задачей! В одномерном массиве, состоящем из n вещественных элементов, вычислить: 1) сумму элементов массива с нечетными номерами; 2) сумму элементов массива, расположенных между первым и последним отрицательными элементами. Сжать массив, удалив из него все элементы, модуль которых не превышает 1. Освободившиеся в конце массива элементы заполнить нулями. вот что... http://www.cyberforum.ru/cpp-beginners/thread298753.html
C++ Не работает цикл!!!
Help!!!!! Почему не считает цикл... опять где-то ошибся #include<conio.h> #include<stdio.h> #include<math.h> #include<iostream> using namespace std; int main() { int schet=1, pered;
C++ Не знаю как исправить ошибку в программе
Добрый день. Вот код программы: #pragma argsused #include <iostream.h> #include <time.h> #include <conio.h> void insert (int *a, int n) // ФУНКЦИЯ ВСТАВОК { int i, j, t; // объявление переменных for (i=1; i<n; i++)
C++ Точка лежит ли в кольце окружности http://www.cyberforum.ru/cpp-beginners/thread298717.html
Всем привет.Подскажите пожалуйста где здесь ошибка. #include <windows.h> #include<iostream> using namespace std; void main () {SetConsoleOutputCP(1251); int y,z,x,c,a,b,n,m,k; cout<<"Введите кординаты точки А"<<endl; cin>>y;
C++ Использование возвращенного двумерного массива. Доброго времени суток. Проблема такая. int *roc(int a) { //тут преобразования return *a; } void main подробнее

Показать сообщение отдельно
Jeorge
Сообщений: n/a
18.05.2011, 16:02     Алгоритм Хоспула
Задача: поиск подстроки в строке с помощью алгоритма Хорспула. Строка задаётся из 10 млн случайных символов. Подстрока состоит, например, из 1 млн символов.
А проблема в том, что алгоритм Хорспула ни в какую не хочет работать при случайном наборе строк. Но работает нормально, если строки вручную вводишь. Может кто подскажет в чём проблема?
Код
#include <iostream>
#include <string>
using namespace std;

int HorspoolMatch(string T,string P)
{	
	int n=T.length();
	int m=P.length();
	int Slide[256];
	for(int i=0; i<256; ++i)
		Slide[i]=m;
	for(int l=0; l<m; ++l)
		Slide[P[l]] = m - l - 1;

	int k=0;
	while(k < n - m + 1)
	{
		for(int i=0; i<m; i++)
		{
			if(T[k+i]!=P[i])
				break;
			if(i==m-1)
				return k;
		}
		k += Slide[T[k+m-1]];
	}
	return -1;
}

void main()
{
	setlocale (LC_ALL, "Russian");
	
	string T="";//строка, в которой ищем
	string P="";//строка, которую ищем
	string S="";//строка,для создания случайных символов,которые добавляются потом в строки T и P
	//генерируем строки
	for(int i=0; i<1000000;i++)
	{
		S=rand();
		T.append(S);
		if(i>1 && i<5)
		{
			P.append(S);
		}
	}

	cout << "Алгоритм Хорспула: " << HorspoolMatch(T,P) <<  endl;
	
}
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
 
Текущее время: 14:04. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru