董duoduo 2021-10-08 13:23 采纳率: 0%
浏览 25

kmp算法语法无错误改了好久可是运行不出任何结果,望指点迷津。

编译没错 可是啥都运行不出来
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
void prefix_table(char pattern[],int prefix[],int n){
prefix[0]=0;
int len=0;
int i=1;
while(i<n){
if(pattern[i]==pattern[len]){
len++;
prefix[i]=len;
i++;
}
else{
if(len>0){
len=prefix[len-1];}
else{
prefix[i]=len;
i++;
}
}
}
}
void moveprefix_table(int prefix[],int n){
int i;
for(i=n-1;i>0;i--){
prefix[i]=prefix[i-1];
}prefix[0]=-1;
}
void kmp_search(char text[],char pattern[]){
int i=0;
int j=0;
int n=strlen(pattern);
int m=strlen(text);
int*prefix=malloc(sizeof(int)*n);
prefix_table(pattern,prefix,n);
moveprefix_table(prefix,n);
while(i<m){
if(i==n-1&&text[i]==pattern[j]){
printf("found pattern at %d",i-j);
j=prefix[j];}
if(pattern[j]=text[i]){
i++;j++;
}
else{
j=prefix[j];
if(j==-1){
i++;j++;
}
}
}
}

int main(){
char pattern[]="ABABCABAA";
char text[]="ABABABCABAABABA";
kmp_search(text,pattern);
return 0;
}

  • 写回答

1条回答 默认 最新

  • CSDN专家-sinJack 2021-10-08 13:32
    关注
    printf("found pattern at %d",i-j);
    

    就一处输出语句?就不能多写点输出吗?
    如果不满足条件呢。。。

    评论

报告相同问题?

问题事件

  • 创建了问题 10月8日

悬赏问题

  • ¥15 is not in the mmseg::model registry。报错,模型注册表找不到自定义模块。
  • ¥15 安装quartus II18.1时弹出此error,怎么解决?
  • ¥15 keil官网下载psn序列号在哪
  • ¥15 想用adb命令做一个通话软件,播放录音
  • ¥30 Pytorch深度学习服务器跑不通问题解决?
  • ¥15 部分客户订单定位有误的问题
  • ¥15 如何在maya程序中利用python编写领子和褶裥的模型的方法
  • ¥15 Bug traq 数据包 大概什么价
  • ¥15 在anaconda上pytorch和paddle paddle下载报错
  • ¥25 自动填写QQ腾讯文档收集表