Brute-Force算法的基本思想是:

1) 从目标串s 的第一个字符起和模式串t的第一个字符进行比较,若相等,则继续逐个比较后续字符,否则从串s 的第二个字符起再重新和串t进行比较。

2) 依此类推,直至串t 中的每个字符依次和串s的一个连续的字符序列相等,则称模式匹配成功,此时串t的第一个字符在串s 中的位置就是t 在s中的位置,否则模式匹配不成功。

该算法最坏情况下要进行M*(N-M+1)次比较,时间复杂度为O(M*N)。

算法流程图:

代码:

#include <iostream>
using namespace std;
#define MAXSIZE 255
typedef struct
{int length;char *ch;
}HString;
int index_BF(HString s,HString t,int pos)
{int i=pos,j=0;while(i<s.length&&j<t.length){   if(s.ch[i]==t.ch[j]){++i;++j;}else{i=i-j+1;j=0;}}if(j>=t.length)return i-t.length;else return -1;
}
void strAssign(HString &s,char *c)
{s.ch=new char[MAXSIZE];strcpy(s.ch,c);s.length=strlen(c);
}
int main()
{int x;HString s,t;strAssign(s,"dasdsadsa");strAssign(t,"ad");x=index_BF(s,t,0);cout<<x<<endl;return 0;
}

C语言入门基础——Brute-Force算法相关推荐

  1. c语言中return的作用_C语言入门基础整理

    学习计算机技术,C语言可以说是必备的,他已经成为现在计算机行业人学习必备的,而且应用也是十分的广泛,今天就来看看拥有几年c语言工作经验的大神整理的C语言入门基础知识,没有学不会,只有不肯学. 结构化程 ...

  2. c语言3到7位水仙花数流程图_C语言入门基础整理

    学习计算机技术,C语言可以说是必备的,他已经成为现在计算机行业人学习必备的,而且应用也是十分的广泛,今天就来看看拥有几年c语言工作经验的大神整理的C语言入门基础知识,没有学不会,只有不肯学. 结构化程 ...

  3. Brute Force算法介绍及C++实现

    字符串的模式匹配操作可以通过Brute Force算法来实现.字符串匹配操作即是查看S串(目标串或主串)中是否含有T串(模式串或子串),如果在主串中查找到了子串,则模式匹配成功,返回模式串中的第一个字 ...

  4. C语言入门基础知识有哪些?

    众所周知C语言经久不衰,并且很多人都想要成为C语言工程师,为了能够做好C语言技术学习,需要知晓C语言入门基础知识有哪些. 用一个简单的C程序例子,介绍C语言的基本构成.格式.以及良好的书写风格,使小伙 ...

  5. 【无标题】C#nbsp;语言入门基础介绍学习通http://www.bdgxy.com/

    文章来源: 学习通http://www.bdgxy.com/ 普学网http://www.boxinghulanban.cn/ 智学网http://www.jaxp.net/ 表格制作excel教程h ...

  6. Go语言入门--基础语法

    Go语言入门系列文章目录 Go语言入门–基础语法 Go语言入门–流程语句 Go语言入门–数组和切片 集合(Map)(咕咕咕

  7. c语言入门自学ppt文库,《C语言入门基础》PPT课件.ppt

    第3章C语言入门基础 在正式学习C语言之前首先要掌握C语言的基本知识 如数制 对象的命名即标识符 以及C语言中的数据类型等 通过本章的学习为以后几章打下基础 3 1标识符 在C语言中 程序的编写是运用 ...

  8. HTML网页设计语言入门基础教学视频-赖国荣-专题视频课程

    HTML网页设计语言入门基础教学视频-2858人已学习 课程介绍         本课程为软件相关专业网页设计入门基础课程,课程共18讲,上课代码及PPT课件已经上传,可以直接下载使用. 课程收益   ...

  9. C语言基础知识入门和C语言入门基础知识大全

    一.C语言基础知识入门 C语言一出现,就以其丰富的功能.强大的表达能力.灵活性.方便性和广泛的应用,在世界范围内迅速普及和普及.C语言不仅高效而且可移植.它可以用来开发应用软件.驱动程序.操作系统等. ...

最新文章

  1. java响应很慢排插_服务响应时间慢:Java SecureRandom和/ dev / random - java
  2. Linux绘图函数与驱动,Linux中与驱动相关的ioctl函数
  3. [简明python教程]学习笔记2014-04-28 23:45:56
  4. MYSQL索引创建与删除
  5. 最简单的基于FFmpeg的移动端例子:IOS HelloWorld
  6. chmod命令的用法
  7. 留言板删除功能mysql_用PHP写留言板代码时怎样才能实现删除和修改留言的啊?代码是怎样的?...
  8. 整理好全球半导体公司,看看哪些你的上下游厂家
  9. CATIA软件有限元分析功能详解及使用教程
  10. 模式识别、机器学习与深度学习
  11. 高端存储系统的发展方向展望
  12. 语音识别(五)——Mel-Frequency Analysis, FBank, 语音识别的评价指标, 声学模型进阶
  13. 开放信息抽取(OIE)系统(三)-- 第二代开放信息抽取系统(人工规则, rule-based, 先抽取关系)
  14. GitHub里的MySQL基础架构自动化测试
  15. 树莓派是网盘?nextcloud在树莓派上的应用
  16. 2020最后一天 || 时间相关单光子计数技术的原理和优点
  17. 2019最新百度、头条、小米、360、网易、等公司 Android 社招面试题目
  18. 【人工智能笔记】第三十六节:TF2实现VITGAN对抗生成网络,MSA多头注意力 实现
  19. oracle open_cursors参数配置
  20. openwrt配置虚拟多wan

热门文章

  1. kafka清理数据日志
  2. shell脚本:批量修改文件名(文件名中添加字符)
  3. RabbitMQ安装|使用|概念|Golang开发
  4. static和extern对函数的作用
  5. Java之类的构造器(反射)
  6. 关Jquery判断input type=checkbox元素是否被选中的判断
  7. FreeMarker笔记 前言第1章 入门
  8. [转载]ns2在linux安装过程
  9. Flex的事件(十四)
  10. java 内存 四_java最终化的内存保留问题(4)