Технический форум
Вернуться   Технический форум > Программирование > Форум программистов > C/C++/С#


Ответ
 
Опции темы Опции просмотра
Старый 19.05.2013, 20:48   #1 (permalink)
tenx
Member
 
Регистрация: 24.03.2009
Сообщений: 185
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 92
По умолчанию Несложный вопрос по алгоритму

Цитата:
#include <iostream>
using namespace std;
int main()
{
char T[40000],S[10000];
int j,n,m,v=0,w=0,k=1,P = 9941,D=256;
/*
Ввод текста и образца
*/
for(int i=1;i<=m;i++)
{
v=(v*D+(int)S[i])%P;
w=(w*D+(int)T[i])%P;
}
for(int i=1;i<=m-1;i++)
k=(k*D)%P;//k имеет значение остатка деления Dm-1 на P<br />
for(int i=m+1;i<=n+1;i++)
{
if(w==v){j=0;//если числа равны, то строки принадлежат одному классу, и надо проверить совпадают ли они
while((j<m)&(S[j+1]==T[i-m+j])){j++;}
if(j==m) cout << "Образец входит в текст начиная с" <<i-m<<"-го символа";//окончательная проверка
}
if(i<=n) w=(D*(w+P-(((int)T[i-m])*k)%P))+(((int)T[i])%P);
}
return 0;
}
Это Алгоритм Рабина-Карпа. Вопрос как дополнить программу, чтобы можно было вводить текст и искомую строку, сейчас в программе этого не реализованно.
tenx вне форума   Ответить с цитированием

Старый 19.05.2013, 20:48
Helpmaster
Member
 
Аватар для Helpmaster
 
Регистрация: 08.03.2016
Сообщений: 0

Эти ссылки могут раскрыть глаза на решение проблемы

Pascal, программа реализации метода покоординатного спуска по алгоритму
Вопрос по USB
Вопрос по SSD
Вопрос по Wi-fi
Несложный но красивый корпус компьютера

Старый 20.05.2013, 22:33   #2 (permalink)
kreol
Member
 
Аватар для kreol
 
Регистрация: 27.02.2010
Сообщений: 659
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 1312
По умолчанию

Немного не понял что надо...
Что ввести? В какую переменную?
kreol вне форума   Ответить с цитированием
Ads

Яндекс

Member
 
Регистрация: 31.10.2006
Сообщений: 40200
Записей в дневнике: 0
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 55070
Ответ


Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Выкл.
HTML код Выкл.
Trackbacks are Вкл.
Pingbacks are Вкл.
Refbacks are Выкл.




Часовой пояс GMT +4, время: 18:57.

Powered by vBulletin® Version 6.2.5.
Copyright ©2000 - 2014, Jelsoft Enterprises Ltd.