永发信息网

使用块链结构实现修正的KMP匹配算法

答案:1  悬赏:70  手机版
解决时间 2021-04-11 04:52
修正的KMP匹配算法为:(这是一整个程序,希望高手帮帮忙,万分感激 )
#include <stdio.h>
#include <string.h>
#include <time.h>
#define SLen 100
#define TLen 30

int KMP(char *S,char *T,int n)
{
int i=1,j=0,nextval[TLen+1],l,p,q=0;
p=n;
nextval[0]=0;
nextval[1]=0;
while(i <TLen)
{
if(j==0||(*(T+i-1)==*(T+j-1)))
{
++i;++j;
if((*(T+i-1)!=*(T+j-1)))nextval[i]=j;
else nextval[i]=nextval[j];
}
else j=nextval[j];
}
for(l=1;l <TLen+1;l++)
printf("nextval[%d]=%d\n",l,nextval[l]);
while((p <=SLen)&&(q <=TLen))
{
if(q==0||(*(S+p-1)==*(T+q-1)))
{
++p;++q;
}
else q=nextval[q];
}
if(q>TLen)return(p-TLen);
else return(0);
}

void main()
{
clock_t start, finish;
double duration;
start = clock(); //计时开始

int pos,k;
char S[SLen],T[TLen];
printf("Please input SString S[%d]:\n",SLen);
scanf("%s",S);
printf("Please input SString T[%d]:\n",TLen);
scanf("%s",T);
printf("Please input pos:\n");
scanf("%d",&pos);
k=KMP(S,T,pos);
printf("\nThe position of SString T in SString S after %d numbers is:%d.\n",pos,k);


finish = clock();
printf( "Time to do this test is: \n ");
duration = (double)(finish - start) / CLOCKS_PER_SEC;
printf( "%f seconds\n", duration ); //计时结束

}
最佳答案
不知道你要问啥

如果要代码,看这个!

#include <stdio.h>
#include <string.h>

#define MAXLEN 256
int next[MAXLEN];

void KMP(char* S, char* T)
{
int i, j, n, m;

m = strlen(T);
i = 1; j = 0;
next[0] = 0;
while(i < m) {
if(T[i] == T[j]) {
next[i++] = ++j;
} else if(j > 0) {
j = next[j-1];
} else {
next[i++] = 0;
}
}

i = j = 0;
n = strlen(S);
while(i < n) {
if(S[i] == T[j]) {
++j;
if(j == m) {
printf("pos %d\n", i-m+1);
}
++i;
} else if(j > 0) {
j = next[j-1];
} else
++i;
}
}

int main()
{
KMP("acabaacabacacbacabbc", "aca");
getchar();
return 0;
}
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
她说:我想问你今天整个人掉进粪坑去了吗[呲
我在好友买卖里身价明明是10400呀,为什么第二
王天一的生日是几号
永顺县湘西优秀民办幼儿园永顺县教育局在哪里
濮鞠萍 写首诗
韩氏地址有知道的么?有点事想过去
文三西路康乐新村附近有没有中信银行
双鱼座女生伤心了会怎样
超Q高级版好吗?具体一点?如果退了还是黄金3
什么是人类啊
为什么我会一直追求梦寐以求的生活而不是平平
昆明那里有假胡子卖。。。。急用!
上海南站附近,在南站的地下商场,里面的衣服是
对老师一句话评价,夸老师的诗句,冷门一点比
北京哪里有股票入门培训的学校啊
推荐资讯
怎样或得QQ元宝
QQ音乐可不可以用网页播放器点亮?
翼年代记结局
我的电脑鼠标老自己跑到一个点上怎么解决?
飞信怎么回事 啊
谁有QQ农场群++我
露娜魔法师转职加点问题
未来星文化艺术培训中心怎么去啊,有知道地址
凉水洗脸有好处吗
我手臂的皮中有一小块硬硬的肉疙瘩,请问怎么
玛雅的预言是真还是假的
联想 昭阳 K31 P0800064M010GCFe
正方形一边上任一点到这个正方形两条对角线的
阴历怎么看 ?