Я работаю над этим алгоритмом Морриса-Пратта, чтобы соответствовать подстрокам текста, и у меня возникают проблемы с объявлением функции сбоя в фактической функции, поэтому компилятор выиграл Не жалуйтесь. Мне нужно 2 часа, чтобы закончить это. Поэтому, пожалуйста, помогите мне скоро:/Функция не объявлена в области (C++)
int KMPmatch(const string& text, const string& pattern)
{
int n = text.size();
int m = pattern.size();
std::vector<int> fail = computeFailFunction(pattern);
int i = 0;
int j = 0;
while (i < n)
{
if (pattern[j] == text[i])
{
if (j == m-1) return i-m+1;
i++; j++;
}
else if (j > 0) j = fail[j-1];
else i++;
}
return -1;
}
//KMPFailure function
std::vector<int> computeFailFunction(const string& pattern)
{
std::vector <int> fail(pattern.size());
fail[0] = 0;
int m = pattern.size();
int j = 0;
int i = 1;
while (i < m)
{
if (pattern[j] == pattern[i])
{
fail[i] = j+1;
i++; j++;
}
else if (j > 0)
{
j = fail [j-1];
}
else
{
fail[i]= 0;
i++;
}
}
return fail;
}
Вы отправили объявление 'std :: vector computeFailFunction (const string & pattern);' before 'KMPmatch'? –
greatwolf
Нет. Мой плохой. Теперь он отлично компилируется! благодаря – Gela