文学研究助手与模式匹配算法KMP

作者在 2013-12-15 16:07:35 发布以下内容

以下是KMP算法,怎么讲文学研究助手的内容加进去 



#include <stdio.h>

#include <string.h>
#define Maxsize 100


int StrIndex_KMP(char *s,char *t,int pos,int next[])
{
int i,j;
i=pos;
j=1;
while(i<=s[0]&&j<=t[0])
if(j==0||s[i]==t[j])
{
i++;
   j++;
}
else
j=next[j];
if(j>t[0])
return i-t[0];
else
return 0;
}


void Get_next(char t[],int next[])
{
int i,j;
i=1;
j=1;
next[1]=0;
while(i<t[0])
{
if(j==0||t[i]==t[j])
{
i++;
j++;
next[i]=j;
}
else
j=next[j];
}
}


main()
{
char s[Maxsize],t[Maxsize];
int next[Maxsize],i;
printf("请输入存储内容: \n");
scanf("%s",s+1);
printf("请输入匹配的内容: \n");
scanf("%s",t+1);
s[0]=strlen(s+1);
t[0]=strlen(t+1);
Get_next(t,next);
i=StrIndex_KMP(s,t,1,next);
if(i==0)
printf("匹配失败!\n");
else
printf("匹配成功!\n首字符存储位置为%d\n",i);
}




默认分类 | 阅读 1842 次
文章评论,共0条
游客请输入验证码
浏览1842次
文章分类
文章归档
最新评论