zhuaaaaaazhu
2017-04-12 15:40我感觉非常奇怪不能理解,请大神帮忙看看
C语言一个非常奇怪的问题。大神们来看看。。。
//下面是我写的测试KMP算法的程序。问题在KMP算法注释中。。。。。。。。。
#include
#include
int next[10]={0};
void findnextal(char *s)
{
int i=0,k=-1,len;
len=strlen(s)-1;
next[0]=-1;
while(i<len)
{
while(k==-1||s[i]==s[k])
{
i++;
k++;
next[i]=k;
while(s[i]==s[k])
{
next[i]=next[k];
k=next[i];
}
}
k=next[k];
}
}
int kmp(char *s,char *p)
{
int i=0,j=0;
while(j!=strlen(p)&&i<strlen(s))//为什么把j!=strlen(p)改为j<strlen(p)程序就失效了?
{
if(s[i]==p[j]||j==-1)
{
i++;
j++;
}
else j=next[j];
}
if(j==strlen(p)) return i-strlen(p);
else return -1;
}
int main()
{
int i;
char str[100],s[100];
printf("input p:\n");
gets(str);
findnextal(str);
for(i=0;i<strlen(str);i++)
{
printf("%d ",next[i]);
}
printf("puts s:\n");
gets(s);
printf("%d ",kmp(s,str));
return 0;
}
- 点赞
- 回答
- 收藏
- 复制链接分享
1条回答
为你推荐
- 哪位前端大神帮忙看看:WebStorm开发AngularJS创建不了项目
- 求前端大神
- 3个回答
- 自己写的链表小程序,请大神帮忙看看
- 链表
- 13个回答
- 为什么我android UDP通信 只能发信息接收不到信息。请大神帮忙
- 2个回答
- python二分法,请大神帮忙看看这个输出,求解释。非常捉急~
- python
- 1个回答
- 求大神帮忙看看这个错误
- xcode
- 2个回答