C语言实现模式匹配算法
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
方法一:
#include
#include
#define maxsize50
int BF(char s[],char t[]);
int main()
{
char a[maxsize];char b[maxsize];
int i;
gets(a);
gets(b);
for(i=0;a[i]!='\0';i++)
printf("%c",a[i]);
putchar('\n');
for(i=0;b[i]!='\0';i++)
printf("%c",b[i]);
putchar('\n');
printf("模式匹配的位置:%d\n",BF(a,b)); return0;
}
int BF(char s[],char t[])
{
int m,n,i=0,j=0;
m=strlen(s);
n=strlen(t);
while(i if(s[i]==t[j]) {i++;j++;} else{i=i-j+1; j=0; } if(j==n) return(i-n+1); else return0; } 方法二: #include #include #define maxsize50 int BF(char s[],char t[]); int main() { char a[maxsize],b[maxsize]; int i; gets(a); gets(b); for(i=1;a[i]!='\0';i++) printf("%c",a[i]); putchar('\n'); for(i=1;b[i]!='\0';i++) printf("%c",b[i]); putchar('\n'); printf("模式匹配的位置:%d",BF(a,b)); putchar('\n'); return0; } int BF(char s[],char t[]) { int m,n,i=1,j=1; m=strlen(s); n=strlen(t); while(i if(s[i]==t[j]) {i++;j++;} else {i=i-j+2; j=1;} if(j==n) return(i-n+1); else return0; }