实 验 报 告
注:实验报告后要求附上源程序清单。
源程序:
#include "stdio.h" #include "conio.h" #include
//BF算法
int BF(char s[],char t[]) { int i; int a; int b; int m,n; m=strlen(s); //主串长度 n=strlen(t); //子串长度 printf("\n*****BF*****算法\n"); for(i=0;i
a++; b++; } if(b==n) { printf("查找成功!!\n\n"); return 0; } } printf("找不到%s\n\n",t); return 0; }
//前缀函数值,用于KMP算法 int GETNEXT(char t[],int b) { int NEXT[10]; NEXT[0]=-1; int j,k; j=0; k=-1; while(j
//KMP算法
int KMP(char s[],char t[]) { int a=0; int b=0; int m,n; m=strlen(s); //主串长度
n=strlen(t); //子串长度 printf("\n*****KMP算法*****\n"); while(a
//滑动距离函数,用于BM算法 int DIST(char t[],char c) { int i=0,x=1; int n; n=strlen(t); while(x&&i!=n-1) { if(t[i]==c) x=0; else i++; } if(i!=n-1) n=n-1-i; return n; }
//BM算法
int BM(char s[],char t[]) { int a=0; int b=0; int i,j; printf("\n*****BM算法*****\n"); int z=0; i=strlen(t)-1; while(i=0&&s[i]==t[j]) { j--; i--; } if(j
void main() { char s[]={'\0'}; //主串S int n=10; char t[]={'\0'}; //模式T printf("\n----------串匹配问题----------\n"); printf("\n输入主串S\nS="); scanf("%s",&s); printf("\n输入子串T\nT="); scanf("%s",&t); printf("主串长%d,子串长为%d\n",strlen(s),strlen(t));
}
BF(s,t); //BF算法
KMP(s,t); //KMP算法 BM(s,t); //BM算法
实 验 报 告
注:实验报告后要求附上源程序清单。
源程序:
#include "stdio.h" #include "conio.h" #include
//BF算法
int BF(char s[],char t[]) { int i; int a; int b; int m,n; m=strlen(s); //主串长度 n=strlen(t); //子串长度 printf("\n*****BF*****算法\n"); for(i=0;i
a++; b++; } if(b==n) { printf("查找成功!!\n\n"); return 0; } } printf("找不到%s\n\n",t); return 0; }
//前缀函数值,用于KMP算法 int GETNEXT(char t[],int b) { int NEXT[10]; NEXT[0]=-1; int j,k; j=0; k=-1; while(j
//KMP算法
int KMP(char s[],char t[]) { int a=0; int b=0; int m,n; m=strlen(s); //主串长度
n=strlen(t); //子串长度 printf("\n*****KMP算法*****\n"); while(a
//滑动距离函数,用于BM算法 int DIST(char t[],char c) { int i=0,x=1; int n; n=strlen(t); while(x&&i!=n-1) { if(t[i]==c) x=0; else i++; } if(i!=n-1) n=n-1-i; return n; }
//BM算法
int BM(char s[],char t[]) { int a=0; int b=0; int i,j; printf("\n*****BM算法*****\n"); int z=0; i=strlen(t)-1; while(i=0&&s[i]==t[j]) { j--; i--; } if(j
void main() { char s[]={'\0'}; //主串S int n=10; char t[]={'\0'}; //模式T printf("\n----------串匹配问题----------\n"); printf("\n输入主串S\nS="); scanf("%s",&s); printf("\n输入子串T\nT="); scanf("%s",&t); printf("主串长%d,子串长为%d\n",strlen(s),strlen(t));
}
BF(s,t); //BF算法
KMP(s,t); //KMP算法 BM(s,t); //BM算法