BF算法
2016-01-11 13:11
393 查看
BF算法是一种暴力低效率的模式匹配算法
思想:将目标串S的第一个字符串和模式串P的第一个字符对比,若相等,就判断S的第二个字符和P的第二个字符;
若不相等,就比较S的第二个字符和P的第一个字符
一直比较下去直到找到匹配的结果
实现的代码
运行查询的结果是(在vc++6.0下)
思想:将目标串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下)
相关文章推荐
- 书评:《算法之美( Algorithms to Live By )》
- 动易2006序列号破解算法公布
- C#数据结构之顺序表(SeqList)实例详解
- Ruby实现的矩阵连乘算法
- C#插入法排序算法实例分析
- Lua教程(七):数据结构详解
- 解析从源码分析常见的基于Array的数据结构动态扩容机制的详解
- 超大数据量存储常用数据库分表分库算法总结
- C#数据结构与算法揭秘二
- C#冒泡法排序算法实例分析
- C#数据结构之队列(Quene)实例详解
- C#数据结构揭秘一
- C#数据结构之单链表(LinkList)实例详解
- 算法练习之从String.indexOf的模拟实现开始
- C#算法之关于大牛生小牛的问题
- C#实现的算24点游戏算法实例分析
- c语言实现的带通配符匹配算法
- 数据结构之Treap详解
- 浅析STL中的常用算法
- 算法之排列算法与组合算法详解