标题:[求助]这个KMP模式匹配,哪里错了
只看楼主
Lupkid
Rank: 1
等 级:新手上路
帖 子:42
专家分:0
注 册:2007-10-18
 问题点数:0 回复次数:2 
[求助]这个KMP模式匹配,哪里错了
#include "iostream"
#include "stdlib.h"
#include "stdio.h"
#define N 255
using namespace std;
typedef unsigned char SString[N+1];
SString T,S;
void GetNext(SString &T,int *next) {
int i=1,j=0;
next[i]=0;
while(i<T[0])
if(j==0||T[i]==T[j]){
++i;++j;
next[i]=j;}
else j=next[j];
}
int IndexKMP(SString &S,SString &T,int *next) {
int i=1,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 main(){
int k;
int next[N];
cin>>S;
cin>>T;
GetNext(T,next);
k=IndexKMP(S,T,next);
cout<<k;
}
搜索更多相关主题的帖子: KMP 模式 
2007-10-19 21:03
Lupkid
Rank: 1
等 级:新手上路
帖 子:42
专家分:0
注 册:2007-10-18
得分:0 
回复:(Lupkid)[求助]这个KMP模式匹配,哪里错了
等待中
2007-10-19 21:47
zxc1998
Rank: 1
等 级:新手上路
威 望:1
帖 子:133
专家分:0
注 册:2007-3-21
得分:0 
按照你的算法,S[0]存放的是S的长度,而你采用cin>>S,
S[0]存放的是你输入的第一个字符。你再好好考虑一下,如何修改。
2007-10-19 22:04



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




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

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