您的位置:首页 > 理论基础 > 数据结构算法

BF算法

2016-01-11 13:11 393 查看
BF算法是一种暴力低效率的模式匹配算法

思想:将目标串S的第一个字符串和模式串P的第一个字符对比,若相等,就判断S的第二个字符和P的第二个字符;

                                                                                                                 若不相等,就比较S的第二个字符和P的第一个字符

一直比较下去直到找到匹配的结果

实现的代码

#include <stdio.h>
#include <string.h>
#include "stdlib.h"

#define MAXLEN 100

int BFMatch(char *x, char *y);

int main()
{
char s[MAXLEN] = {"ababcababa"}; //目标串
char p[MAXLEN] = {"ababa"}; //模式串

int flag = BFMatch(s, p);

if(flag == -1)
printf("匹配失败!\n");
else
printf("匹配成功!从目标串的s[%d] = %c 处开始匹配\n", flag, s[flag]);

system("PAUSE");

return 0;
}

int BFMatch(char *s, char *p)
{
int m, n;

m = strlen(s);//m是目标串的长度
n = strlen(p);//n模式串的长度

for(int i = 0; i <=m-n+1; i++)//m-n+1是要判断的次数,因为当模式串一直后移到剩余的长度等于模式串的长度就行了
{
for(int j = 0; j < n; j++)
{
if(s[i + j] != p[j])//当匹配到有字符不相等,那么退出循环判断
break;

if( j == n - 1)//这里标明判断到n-1(也就是模式串的最后一个下标)都相等,那么我们就可以判断找到了
{              //模式串,返回它的下标i
return i;
}
}
}

return -1;//找不到的话就返回-1
}
总结:由于这个算法比较简单,代码块注释也详细,在此就不在详谈
运行查询的结果是(在vc++6.0下)

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  数据结构 算法