码迷,mamicode.com
首页 > 编程语言 > 详细

BF算法(蛮力匹配)

时间:2019-10-14 10:57:57      阅读:95      评论:0      收藏:0      [点我收藏+]

标签:class   pre   start   开始   iostream   等于   nbsp   模式   位置   

输入主串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 = 0,j = 0;//i,j变量分别表示在主串和模式串的位置 
    int start = 0;//start记录主串回溯的位置 
    while(a[i] != \0 && b[j] != \0)
    {
        if(a[i] == b[j])
        {
            i++;
            j++;
        }
        else
        {
            start++;
            i = start;
            j = 0;
        }
    }
    if(b[j] == \0)//如果是模式串所有匹配完成,即匹配成功,返回位置 
        return start + 1;
    else//否则匹配失败 
        return 0;
}

int main()
{
    int t;
    cin >> t;//t个测试样例 
    while(t--)
    {
        int flag;//模式匹配成功的位置 
        cin >> a >> b;//读入字符串 
        flag = BF(a,b);
        cout << flag << endl;
    }
    return 0;
}

 

BF算法(蛮力匹配)

标签:class   pre   start   开始   iostream   等于   nbsp   模式   位置   

原文地址:https://www.cnblogs.com/biaobiao88/p/11669826.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!