Я пытаюсь понять реализацию алгоритма Рабина-Карпа. d — количество символов во входном алфавите, но если я заменю 0 или любое другое значение вместо 20, это ни на что не повлияет. Почему это происходит именно так?
// Rabin-Karp algorithm in C++
#include
#include
using namespace std;
#define d 20
void rabinKarp(char pattern[], char text[], int q) {
int m = strlen(pattern);
int n = strlen(text);
int i, j;
int p = 0;
int t = 0;
int h = 1;
for (i = 0; i < m - 1; i++)
h = (h * d) % q;
// Calculate hash value for pattern and text
for (i = 0; i < m; i++) {
p = (d * p + pattern) % q;
t = (d * t + text) % q;
}
// Find the match
for (i = 0; i
Подробнее здесь: https://stackoverflow.com/questions/702 ... rithm-in-c