程序填空题:模式匹配算法
朴素的模式匹配算法
c++
/***字符串匹配算法***/
#include<cstring>
#include<iostream>
using namespace std;
#define OK 1
#define ERROR 0
#define OVERFLOW -2
typedef int Status;
#define MAXSTRLEN 255 //用户可在255以内定义最长串长
typedef char SString[MAXSTRLEN+1]; //0号单元存放串的长度
//BF算法
int Index(SString S, SString T, int pos)
{
int i = pos;
int j = 1;
while()
{
if(S[i]==T[j])
{
;
;
}
else
{
;
;
}
}
if (j > T[0])
;
else
return 0;
return 0;
}
int main()
{
char str1[MAXSTRLEN+1],str2[MAXSTRLEN+1];
cin>>str1>>str2;
SString S,T;
strcpy(&S[1],str1);
strcpy(&T[1],str2);
S[0]=strlen(str1);
T[0]=strlen(str2);
cout<<Index(S,T,1);
return 0;
}
答案:
第1空:i <= S[0]&&j <= T[0]
第2空:++i
第3空:++j
第4空:i=i-j+2
第5空: j=1
第6空:return i - T[0]
c++
/***字符串匹配算法***/
#include<cstring>
#include<iostream>
using namespace std;
#define OK 1
#define ERROR 0
#define OVERFLOW -2
typedef int Status;
#define MAXSTRLEN 255 //用户可在255以内定义最长串长
typedef char SString[MAXSTRLEN+1]; //0号单元存放串的长度
//BF算法
int Index(SString S, SString T, int pos)
{
int i = pos;
int j = 1;
while()
{
if(S[i]==T[j])
{
;
;
}
else
{
;
;
}
}
if (j > T[0])
;
else
return 0;
return 0;
}
int main()
{
char str1[MAXSTRLEN+1],str2[MAXSTRLEN+1];
cin>>str1>>str2;
SString S,T;
strcpy(&S[1],str1);
strcpy(&T[1],str2);
S[0]=strlen(str1);
T[0]=strlen(str2);
cout<<Index(S,T,1);
return 0;
}
答案:
第1空:i <= S[0]&&j <= T[0]
第2空:++i
第3空:++j
第4空:i=i-j+2
第5空: j=1
第6空:return i - T[0]