栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > C/C++/C#

数据结构 实验六 模式匹配

C/C++/C# 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

数据结构 实验六 模式匹配

实验目的:掌握模式匹配的基本概念,基本原理。

实验要求:掌握模式匹配的基本概念和基本原理。字符串的逻辑特性、存储表示方法,实现模式匹配算法。

实验内容:

编写程序实现模式匹配算法。

#include
using namespace std;

//BF算法
int BF(string S, string T) {
    int start = 0;     
    int i = 0, j = 0;  
    while((S[i] != '') && (T[j] != '')) {
        if(S[i] == T[j]) { 
            i++;
            j++;
        } else {
            start++;    
            i = start;
            j = 0;
        }
    }
    if(T[j] == '') {
        cout << "BF算法匹配成功,返回匹配的起始比较下标:";
        return start + 1;
    } else {
        cout << "BF算法匹配失败,返回:";
        return 0;
    }
}

int main() {
    string S, T;
    cout << "请输入主串S:" << endl;
    cin >> S;
    cout << "请输入模式T:" << endl;
    cin >> T;
    
    cout << "主串S:" << S << endl;
    cout << "模式T:" << T << endl;
    cout << BF(S, T) << endl;
    return 0;
}
#include
using namespace std;

//BF算法
int BF(const string& s, const string& t) {
    int i = 0, j = 0;
    while (i < s.length() && j < t.length()) {
        if(s[i] == t[j]) {
            i++;
            j++;
        } else {
            j = 0;
            i = i - j + 1;
        }
    }
    if (j == t.length()) {
        cout << "BF算法匹配成功,返回匹配的起始比较下标:";
        return i - t.length() + 1;
    } else {
        cout << "BF算法匹配失败,返回:";
        return 0;
    }
}

int main() {
    
    //string S = "ababcabcacbab";  // 主串S="ababcabcacbab"
    string S ;
    //string T = "abcac";          // 模式T="abcac"
    string T ;
    
    cout << "请输入主串S:" << endl;
    cin >> S;
    cout << "请输入模式T:" << endl;
    cin >> T;
    cout << "主串S:" << S << endl;
    cout << "模式T:" << T << endl;
    int reslut = 0;
    reslut = BF(S, T);
    cout << reslut << endl;
    return 0;
}
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/875350.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号