Я пытаюсь сопоставить строки в нескольких процессах. Прямо сейчас я пытаюсь выяснить, как разбить строку на более мелкие кусочки для отправки различным процессам.
Вот метод, который я использую прямо сейчас (не отправка в процессы, просто вызов функции сопоставления для сегментов строки для моделирования):
for (i = 1; i < numProcesses+1; i++){
int charsToSend;
int k = len/numProcesses;
charsToSend = k + sublen;
char* temp[100];
strncpy(temp, base + ((i*k)-k), charsToSend);
temp[charsToSend] = '\0';
int m = matches(temp, sub);
printf("Matches for p%d : %d\n", i, m);
}
Что он делает, это решает, на сколько символов разбить строку в зависимости от количества процессов. Затем он решает отправить это число плюс длину подстроки, чтобы, если совпадение пересекает линию разреза, оно все еще считалось.
Проблема, с которой я столкнулся, заключается в том, что, поскольку я перекрываю длину подстроки для каждого процесса, если в этом перекрытии есть точное совпадение, он учитывается дважды.
Любые идеи о том, как лучше разбить строку, чтобы у меня не было нескольких подсчетов подстроки на границе?