Поиск в строке по алгоритму Кнута - C (СИ)
Формулировка задачи:
Вот код алгоритма...компилирую на досовском BC...не могу устранить ошибки...в чем дело...прошу помощи!!
#include <stdio.h> #include <conio.h> #include <string.h> int SrchKMP(char *S,char *P); void main() { char S[]="iv ivanobich ivanikin"; char P[]="ivanikin"; int r; r=SrchKMP(S,P); if (r<0) printf("\n podstroka \"%s\" ne naidena",P); else printf("\n podstroka \"%s\" naidena, pozichija i=%d",P,r); getch(); } /*=======================================================*/ char* SrchKMP(char *S, char *P) { int i,j,k,M,N; int *d[100]; M=strlen(P); N=strlen(S); d[0]=-1; j=0; k=-1; while (j<(M-1)) { while ((k>=0) && (P[j]!=P[k])) k=d[k]; j++; k++; if (P[j]==P[k]) d[j]=d[k]; else d[j]=k; } i=0; j=0; k=0; while ((j<M) && (i<N)) { while (k<=i) k++; while ((j>=0) && (S[i]!=P[j])) j=d[j]; i++;j++; } if (j==M) return &S[i-M]; else return NULL; }
Решение задачи: «Поиск в строке по алгоритму Кнута»
textual
Листинг программы
int SrchKMP(char *S,char *P);
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д