1.设计BF算法(参考课本92页算法4.1),完成如下功能:
1)建立目标串s=“abcabcabdabba”和模式串t=“abcabd”。
2)采用BF算法求t在s中的位置。
运行结果如图所示:
#include <stdio.h>
#include <string.h>
#define MaxSize 100
typedef struct {
char data[MaxSize]; //定义可容纳MaxSize个字符的空间
} SqString;
void StrAssign(SqString &str, char cstr[]) //str为引用型参数
{
int i;
for (i = 0; cstr[i] != '\0'; i++)
str.data[i + 1] = cstr[i];
str.data[0] = i;
}
void DispStr(SqString str) {
int i;
if (str.data[0] > 0) {
for (i = 1; i <= str.data[0]; i++) {
printf("%c", str.data[i]);
}
printf("\n");
}
}
//BF算法
int Index(SqString s, SqString t) {
int i = 1, j = 1;
//printf("%s", s.data);
//printf("%s", t.data);
//printf("\n");
while (s.data[i] != '\0' && t.data[j]) {
if (s.data[i] == t.data[j]) {
i++;
j++;
} else {
//主串回溯到上次回溯位置的下一个位置
i = i - j + 2;
//模式串回溯到第一个位置
j = 1;
}
}
if (t.data[j] == '\0') {
//返回T在S中第一次出现的位置
return i - j + 1;
} else {
return 0;
}
}
//int Index_kmp(SqString s, SqString t)
//KMP算法
//{
//}
int main() {
SqString s, t;
StrAssign(s, "abcabcabdabba");
StrAssign(t, "abcabd");
printf("串s:");
DispStr(s);
printf("串t:");
DispStr(t);
printf("简单匹配P算法:\n");
printf("t在s中的位置=%d\n", Index(s, t));
}
运行截图
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/140680.html