输入主串a,模式b

b在a中的位置

1.在串a和串b中设置比较的下标i=0,j=0;

2.重复下述操作,直到a或b的所有字符均比较完毕:

  2.1如果a[i]等于b[i],继续比较a和b的下一对字符;

  2.2负责,下标i和j分别回溯,开始下一趟匹配;

3.如果b中所有字符均比较完,则匹配成功,返回本趟匹配的起始位置;负责匹配失败,返回0;

#include<iostream>
#define N 100000
using namespace std;
char a[N],b[N]; int BF(char a[],char b[])//BF算法
{
int i = ,j = ;//i,j变量分别表示在主串和模式串的位置
int start = ;//start记录主串回溯的位置
while(a[i] != '\0' && b[j] != '\0')
{
if(a[i] == b[j])
{
i++;
j++;
}
else
{
start++;
i = start;
j = ;
}
}
if(b[j] == '\0')//如果是模式串所有匹配完成,即匹配成功,返回位置
return start + ;
else//否则匹配失败
return ;
} int main()
{
int t;
cin >> t;//t个测试样例
while(t--)
{
int flag;//模式匹配成功的位置
cin >> a >> b;//读入字符串
flag = BF(a,b);
cout << flag << endl;
}
return ;
}

BF算法(蛮力匹配)的更多相关文章

  1. BF算法与KMP算法

    BF(Brute Force)算法是普通的模式匹配算法,BF算法的思想就是将目标串S的第一个字符与模式串T的第一个字符进行匹配,若相等,则继续比较S的第二个字符和 T的第二个字符:若不相等,则比较S的 ...

  2. 数据结构(三)串---BF算法(朴素模式匹配)

    (一)BF算法了解 BF算法,即暴风(Brute Force)算法,是普通的模式匹配算法.BF算法的思想就是将目标串S的第一个字符与模式串T的第一个字符进行匹配,若相等,则继续比较S的第二个字符和 T ...

  3. 字符串匹配之BF算法

    1)算法原理 BF(Brute Force)算法是普通的模式匹配算法,BF算法的思想就是将目标串S的第一个字符与模式串P的第一个字符进行匹配,若相等,则继续比较S的第二个字符和P的第二个字符:若不相等 ...

  4. BF算法

    BF算法是普通的模式匹配算法,BF算法的思想就是将目标串S的第一个字符与模式串P的第一个字符进行匹配,若相等,则继续比较S的第二个字符和P的第二个字符:若不相等,则比较S的第二个字符和P的第一个字符, ...

  5. 算法 BF算法

    BF算法是字符匹配的一种算法,也称暴力匹配算法 算法思想: 从主串s1的pos位置出发,与子串s2第一位进行匹配 若相等,接着匹配后一位字符 若不相等,则返回到s1前一次匹配位置的后一位,接着与s2的 ...

  6. BF算法(模式匹配)

    BF算法 (Brute-Force算法) 一种简单的模式匹配算法,目的是寻找模式串p是否在目标串s中有出现. 思想:先从第一个字符开始匹配,如果p[j]==s[i],那么继续向下比较,一旦不相等,即回 ...

  7. 串、串的模式匹配算法(子串查找)BF算法、KMP算法

    串的定长顺序存储#define MAXSTRLEN 255,//超出这个长度则超出部分被舍去,称为截断 串的模式匹配: 串的定义:0个或多个字符组成的有限序列S = 'a1a2a3…….an ' n ...

  8. BF算法 + KMP算法

    准备: 字符串比大小:比的就是字符串里每个字符的ASCII码的大小.(其实这样的比较没有多大的意义,我们关心的是字符串是否相等,即匹配等) 字符串的存储结构:同线性表(顺序存储+链式存储) 顺序存储结 ...

  9. 数据结构之BF算法,kmp算法,三元组,十字链表总结

    在这一章中,老师教了我们四种数据结构:BF算法,kmp算法,三元组和十字链表:还给我们讲了2019年团体天体赛中T1-8的AI题 1.对于BF和kmp算法,老师除了在课堂上讲解算法的主要核心思想外,还 ...

随机推荐

  1. 集合数组与String的互转

    1.集合转成数组: 转之前集合里面存的什么类型的数据,就new什么类(特别:存的是基本数据的封装类,就要new他的封装类) 例如: 1.1集合: ArrayList<Character> ...

  2. 【ThinkPHP】API控制器中加入析构函数

    <?php namespace app\api\controller; use think\Controller; class User extends Controller { public ...

  3. MySql(一)_利用NHibernate和MySql交互

    1.基础配置,添加MySql和nHibernate的引用 (1)   添加引用,导入MySql.data.dll:   利用MySql提供的API操作: (2) 添加引用,导入NHibernate.d ...

  4. .Net Standard(.Net Core)实现获取配置信息

    一.前言 在.Net Framework框架有专门获取webconfig配置的方法供我们使用,但是在.Net Core或者.Net Standard中没有可以直接使用的方法来获取配置文件信息,下面就来 ...

  5. HTML定位和布局----float浮动

    1.定位体系一共有三种 (1)常规流: (2)浮动定位 (3)绝对定位 2.float属性常用的语法: (1)float:left:左浮动 (2)float:right:右浮动 (3)float:no ...

  6. 最近学习到的Lambda表达式

    前言 只有光头才能变强. 文本已收录至我的GitHub仓库,欢迎Star:https://github.com/ZhongFuCheng3y/3y 中秋去了躺上海,在外滩上打了个卡: 紧接着学了一下J ...

  7. git 添加子模块 fatal: You are on a branch yet to be born

    删除与.git / modules /目录下的子模块具有相同路径的文件夹.当子模块添加子模块时,如果子模块的url不正确,则会出现此错误.

  8. js屏蔽地区

    其实不需要后台代码也可以获取地区信息的,就算是后台代码,也得需要引用一些第三方库提供免费的api接口才可以,最后还是反序列化才能得到想要的数据,那干嘛不直接找,提供好json格式的api接口,拿来js ...

  9. DOM之事件(二)

    今天详细讲解JavaScript中的常用事件类型和功能. 一 鼠标事件 1,  click:点击事件 等同于mousedown+mouseup,不管这两个事件间隔多久,都会触发一次click事件. 2 ...

  10. axios使用post方式请求出现400

    在vue中如果直接使用与ajax的参数传递方式类型是不正确的,需要转化,方式有两种 1:使用 new URLSearchParams()构造参数 let params = new URLSearchP ...