标题:[求助]kmp算法结果和书上的不一样
只看楼主
haha_zhi
Rank: 1
等 级:新手上路
帖 子:2
专家分:0
注 册:2008-9-22
结帖率:0
已结贴  问题点数:20 回复次数:2 
[求助]kmp算法结果和书上的不一样
KMP算法求得 next 的值!
应该为:
abaabcac
01122312
我照的书上写的,为什么和上面那个不对呢?
下面是源程序,高手帮忙!
#include <stdio.h>
#include <stdlib.h>

void get_next(char T[] ,int next[])
{
     int i=1;
     int j = 0;
     next[1] = 0;
     printf("%s\n",T);
     while(T[i]!='\0')
     {
         if(j == 0 || T[i] == T[j])
         {
              ++i;
              ++j;
              
              next[i] = j;   
              printf("%d=%d\n",i,next[i]);
         }            
         else
         {
              j = next[j];   
         }   
     }
}
int main(int argc, char *argv[])
{
  char T[]="abaabcac";
  int  next[8]={0};
  get_next(T, next);
  system("PAUSE");    
  return 0;
}
搜索更多相关主题的帖子: kmp 算法 
2009-07-28 17:40
wxjeacen
Rank: 7Rank: 7Rank: 7
等 级:禁止访问
帖 子:1291
专家分:628
注 册:2009-3-22
得分:20 


kmp.tar.gz (43.01 KB)

生命不熄,战斗不止.
2009-07-28 19:46
haha_zhi
Rank: 1
等 级:新手上路
帖 子:2
专家分:0
注 册:2008-9-22
得分:0 
晕!楼上在笑,为啥?
void get_next(const char sub[],int next[]){
    int i=0,j=-1;
    next[0]=-1;
    while(i<strlen(sub)){
    if(j==-1||sub[i]==sub[j]){
        ++i,++j;
        next[i]=j;
    }
    else
        j=next[j];
    }
}
我那个和你那个就是下标从0,1 开始,为啥我的不对,说一下具体原因嘛!
高手!
2009-07-29 23:38



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-280828-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 2.063125 second(s), 9 queries.
Copyright©2004-2025, BCCN.NET, All Rights Reserved