Brute-Force算法 (eg.Binary String Matching)

图像匹配之brute-force算法 最近在做图像检索算法(visual search)研究。图像检索本质上还是图像匹配,因此特征提取,特征匹配等步骤都是图像检索算法的核心和难点。直到现在图像检索技术还是处于比较原始的阶段,这一点用google搜图或者百度搜图可以看到,搜索的返回效果不是很令人满意。特征提取的难点在于,针对不同的物体需要不同的特征进行描述。针对于同一种物体,同一种匹配算法,不同的特征可能带来很多的不一样。目前用的比较多 阅读详情

     先说一下Brute-Force算法的设计思想吧。将主串S的第一个字符和模式T的第一个字符比较,若相等,则继续逐个比较后续字符。若不等,则从主串S的下一字符起,重新与T的第一个字符比较,直到主串S的一个连续子串字符序列与模式T相等。返回值为S中与T匹配的子序列第一个字符的序号,即匹配成功;否则,匹配失败,返回值-1。

它的算法实现为: 

int Find Substr(HString &S,String &t,int start)
{
         int i=start,j=0,v;
         while(i<S.length&&j<t.length)
         {
                 if(str[i]==t.str[i])
                 {i++;j++;}
                 else
                 {i=i-j+1;j=0;}
          }
         if(j>t.length-1) v=i-t.length+1;
         else v=-1;
         return v;
}

OJ上练习:

Binary String Matching

时间限制: 3000 ms  |  内存限制: 65535 KB
难度: 3
描述
Given two strings A and B, whose alphabet consist only ‘0’ and ‘1’. Your task is only to tell how many times does A appear as a substring of B? For example, the text string B is ‘1001110110’ while the pattern string A is ‘11’, you should output 3, because the pattern A appeared at the posit
输入
The first line consist only one integer N, indicates N cases follows. In each case, there are two lines, the first line gives the string A, length (A) <= 10, and the second line gives the string B, length (B) <= 1000. And it is guaranteed that B is always longer than A.
输出
For each case, output a single line consist a single integer, tells how many times do B appears as a substring of A.
样例输入
3
11
1001110110
101
110010010010001
1010
110100010101011 
样例输出
3
0
3 
来源
网络
上传者
naonao

AC代码: 

#include <iostream>
#include <cstdio>
#include <string.h> 
using namespace std;
int main()
{
	int N;// 定义输入数据的组数;
	cin>>N;
	char firstChar[12],secondChar[1002]; //定义二个字符数组分别用来存储二个字符串;
	while(N--)
	{
		 memset(firstChar,'\0',sizeof(firstChar));
		 memset(secondChar,'\0',sizeof(secondChar)); // 在用这二个字符数组以前一定要先做置‘\0’的操作;
		 scanf("%s",firstChar);
		 scanf("%s",secondChar); // 字符串的录入;
		 int sum=0; // 用来记录相同的次数;
		 int i=0;// 用来作为第一个字符串的下标值;
		 int j=0;// 用来作为第二个字符串的下标值;
		 int firstLen=(int)strlen(firstChar);
		 int secondLen=(int)strlen(secondChar);
		 while(i<firstLen&&j<secondLen)
		 {
			 if(firstChar[i]==secondChar[j])
			 {
				 i++; j++;
				 if(i==firstLen) 
				 { sum++; i=0;j=j-firstLen+1;}
			 }
			 else 
			{
			      j=j-i+1;  i=0;
			 }
		 }
		 cout<<sum<<endl;
	}
  //  system("pause");
	return 0;
}


OpenCV入门 - 关键点描述子匹配Brute-force OpenCV入门 - 关键点描述子匹配Brute-force 对图片提取特征向量之后进行keypoint descriptors matching,从而可以判断特定图像与训练集中图片的匹配程度,BFMatcher暴力匹配类继承自抽象类DescriptorMatcher,"Brute-force descriptor matcher. For each descriptor in the 阅读详情

相关推荐

基于图像的三维重建——特征点检测与匹配(2)

文章目录前言一、特征点检测二阶的拉普拉斯高斯边缘提取算法(LOG)尺度不变特征变换算法(SIFT)加速稳健特征算法(SURF)Harris角点特征提取算子加速分割测试特征提取(FAST)特征点检测算子(ORB)二、使用步骤1.引入库2.读入数据总结 前言 特征点检测与匹配的作用是计算特征点个数达到要求的图像对,使得图像与图像间一直进行传递,从而形成一条轨迹,为SFM重构中的初始图像对以及R、T求解作铺垫。 一、特征点检测 在特征点检测中,我们主要检测其局部特征点,包括斑点和角点两类特征点。斑点是指图像中

AAAA202012的博客 4058

Python OpenCV 图像匹配(Brute-Force与FLANN)的原理与代码实现

获得两张图像的关键点之后,下一步就是找到它们之间的对应关系,找到那些相匹配的点,从而基于这些点,实现图像拼接。这一方法即暴力搜索法,它选择第一个集合中一个特征的描述符,计算与第二个集合中的所有其他特征描述符之间的距离,返回最接近的一个。该方法返回的结果是DMatch对象的列表。......

乔卿的博客 3864

5G移动网络运维(优化)

5G 网络优化现状 移动通信行业属于技术密集型行业,是国民经济的重要支柱以及整个社会经济运转体系中不可或缺的基础。2019 年年底 5G 开始商用,截止到 2020 年3月,我国三大运营商建设了 16.1 万个 5G 基站,我国成为目前全球 5G 基站最多的国家。预计到 2020 年年底,我国运营商会建设大概 70 万个 5G 基站。基于 5G高频段的特性,信号覆盖距离会低于ins 基站,再加上 5G 万物互联的巨大经济潜力价值需求,后续三大运营商在 5G 基站建设数量上势必会超过当前 LTE 基站数量的

2301_78171382的博客 1325

OpenCV 之 特征匹配

OpenCV 中有两种特征匹配方法:暴力匹配 (Brute force matching) 和 最近邻匹配 (Nearest Neighbors matching) 它们都继承自 DescriptorMatcher,是基于特征描述符距离的匹配,根据描述符的不同,距离可以是 欧氏距离,也可以是 汉明距 1 暴力匹配 首先,任取图像 A 的一个特征描述符,计算它到图像 B 中所有特征描述符的距离;然后,将所得到的距离进行排序;最后,选择距离最短的特征,作为 A-...

fengweichangzi的博客 3398

从零到一:手把手教你用SAM-BA工具完成嵌入式系统烧录

本文详细介绍了如何使用SAM-BA工具完成嵌入式系统烧录的全过程,包括环境搭建、硬件连接、Bootloader烧录以及完整系统镜像的烧录步骤。针对常见问题提供了实用的排查指南,并分享了批量烧录和自定义脚本的高级技巧,帮助开发者高效完成嵌入式系统开发。

weixin_42523792的博客 381

期权定价模型系列[11]三叉树期权定价[trinomial model ]

三叉树期权定价方法简介

xiaowu1997的博客 1847

【实验6 基于BFmatcher的SIFT实现】

BFmatcher(Brute-Force Matching)暴力匹配,应用BFMatcher.knnMatch( )函数来进行核心的匹配,knnMatch(k-nearest neighbor classification)k近邻分类算法。kNN算法则是从训练集中找到和新数据最接近的k条记录,然后根据他们的主要分类来决定新数据的类别。该算法涉及3个主要因素:训练集、距离或相似的衡量、k的大小。

qq_52094801的博客 876

【maven】idea左侧External Libraries里,没有Maven的依赖包 代码飘红

文章目录1.概述M.参考 1.概述 因为内网开发,然后这几天我被隔离了,然后公司搞了一个外网的vpn能连接的云桌面,云桌面也是网络隔离的,因此只能自己拷贝相关的文件到里面。 然后我就拷贝了代码和maven仓库中的一部分,因为本地的20G一次拷贝不完,需要多次拷贝,但是我拷贝了kafka,仍然飘红。具体如下 idea左侧External Libraries里,没有Maven的依赖包 然后整了很久都没搞定,后来我自己新建了一个项目,然后引入发现是不可以的,而且框框里面的飘红。 然后我就想是不是因为缺少依赖

九师兄 4411

【OpenCV 例程 300篇】251. 特征匹配之暴力匹配

基于特征描述符的特征点匹配是通过对两幅图像的特征点集合内的关键点描述符的相似性比对来实现的。暴力匹配(Brute-force matcher)是最简单的二维特征点匹配方法。 在OpenCV中提供了cv::BFMatcher类实现暴力匹配。

youcans的博客 1万+

【项目实战】AES实施应符合NIST密码算法验证程序

AES由美国国家标准与技术研究院(NIST)制定。NIST是负责开发和维护美国政府使用的技术标准的机构,包括加密标准。

奶爸的编程之路,也就一周冷个三天 766

【OpenClaw企业级智能体实战】第13篇:1+N架构实战!OpenClaw多Agent数字员工军团搭建指南(含完整配置+路由策略+代码落地)

单Agent因“记忆负担重、Token消耗高、响应不精准”已难以满足复杂场景需求,而多Agent团队通过“1个编排者+N个执行者”的分工协作模式,能让效率提升300%以上。本文基于OpenClaw 2026稳定版,结合阿里云开发者社区实战案例,从核心认知、准备工作、实操流程、协作机制、安全配置五大维度,完整拆解多Agent团队搭建全流程。文中包含可直接复制执行的代码、详细配置模板、路由策略设置及常见问题排查,新手可在1-2小时内落地属于自己的“数字员工”军团,覆盖内容创作、技术支持、多平台运营等多场景。

专注于人工智能、软件开发、工控自动化、工厂数字化及智能化等领域,希望和大家共同进步! 745

特征点匹配+特征检测方法汇总

特征提取与匹配---SURF;SIFT;ORB;FAST;Harris角点 匹配方法 匹配函数 1. OpenCV提供了两种Matching方式: • Brute-force matcher (cv::BFMatcher) //暴力方法找到点集1中每个descriptor在点集2中距离最近的descriptor;找寻到的距离最小就认为匹配 ...

a7691176的博客 3957

cesium实战目录必看

本文作者长期从事GIS相关工作,专注于三维和地图可视化领域,熟悉Cesium、Three.js、WebGL等开发框架。文章目录展示了作者在Cesium应用中的多项技术实践,涵盖水面反射、离屏渲染、后处理效果、地形裁剪、Shader着色器、动态单体化、气象图、缓冲区域、坡度和坡向分析、三维热力图、通视分析、态势标绘等多个方面。这些内容为开发者提供了丰富的技术参考,展示了Cesium在三维可视化中的强大功能和应用场景。

God's asylum的博客 8718

(四)OpenCV中的特征检测之特征匹配

注释:本文翻译自OpenCV3.0.0 document-&gt;OpenCV-Python Tutorials,包括对原文档种错误代码的纠正1.概述我们知道很多关于特征检测器和描述符。 现在是学习如何匹配不同描述符的时候了。 OpenCV提供了两种技术,Brute-Force匹配器和基于FLANN的匹配器。2.目标我们将看到如何将一副图像中的特征与其它图像特征匹配我们将在OpenCV中使用Bru...

y=f(x)的专栏 1万+

低功耗设计:如何计算power switch的数量?

power switch加多了漏电高,加少了ir drop会有问题,具体加多少合适要如何计算呢?这里可以给一个参考方式。 第一步,先选switch cell的类型 通常选用HVT类型的switch cell,优点是漏电更低,缺点也很明显,电阻大,压降也大,switch cell的大小选择,可以选择(开启电阻x面积)最小的switch cell,即单位面积提供最小并联电阻的cell类型。 第二步,计算数量 选好类型,确定了开启电阻,可以按照如下公式计算数量: Ron/Xnum • W/V = V•P

m0_61544122的博客 3577

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

Brute-force String Matching

复杂度

计算机系秃头少女的博客 363

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

OpenCV学习笔记-brute_force特征匹配

Brute-Force匹配器也就是蛮力匹配器,顾名思义,它的工作原理是:在第一幅图像上选取一个关键点,然后依次与第二幅图像的每个关键点进行(描述符)距离测试,最后返回距离最近的关键点。对于BF匹配器,我们首先要使用cv.BFMatcher()创建一个BFMatcher对象。它有两个可选参数。第一个是normType,它用来指定要使用的距离测试类型。默认值为cv.NORM_L2,这个类型很适合SIF...

云中寻雾的博客 6965

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

蓝牙模块HM-10手册

蓝牙模块HM-10手册,该手册对蓝牙模块HM-10进行了详细的介绍和使用方法以及一些AT指令。

字符串匹配——Brute-Force 简单匹配算法

Brute-Force算法简称BF算法,中文名叫简单匹配算法

ltxdzh's blog 3045

Brute-Force模式匹配算法两种实现方式

1. public static int indexOf(String mainStr,String subString,int start) { if((mainStr.length()&lt;subString.length()) || mainStr==null || subString==null ) { return -1; } for (int i = start...

the blog of Lee 1081

Brute Force匹配(暴力匹配)和FLANN匹配区别

Brute Force匹配(暴力匹配)和FLANN匹配区别

fb_help的专栏 7139

学习OpenCV——KeyPoint Matching 优化方式

今天读Mastering OpenCV with Practical Computer Vision Projects 中的第三章里面讲到了几种特征点匹配的优化方式,在此记录。 在图像特征点检测完成后(特征点检测参考:学习OpenCV——BOW特征提取函数(特征点篇)),就会进入Matching  procedure。 OpenCV提供了两种Matching方式: • Brute-for

小熊不去实验室 3万+

[算法系列之十三]Rabin-Karp字符串查找算法

简介 蛮力匹配法(brute force string matching)是字符串匹配算法中最基本的一种,也是最简单的一种。它确实有自己的优点,比如它并不需要对文本串(text)或模式串(pattern)进行预处理。然而它最大的问题就是运行速度太慢,所以在很多场合下蛮力字符串匹配算法并不是那么有用。我们需要一些更快的方法来完成字符串的匹配工作,然而在此之前,我们还是回过头来再看一遍蛮力匹配法,...

SmartSi 507

字符串匹配算法之BF(Brute-Force)算法

  蛮力搜索,比较简单的一种字符串匹配算法,在处理简单的数据时候就可以用这种算法,完全匹配,就是速度慢啊。 基本思想   从目标串s 的第一个字符起和模式串t的第一个字符进行比较,若相等,则继续逐个比较后续字符,否则从串s的第二个字符起再重新和串t进行比较。   依此类推,直至串t 中的每个字符依次和串s的一个连续的字符序列相等,则称模式匹配成功,此...

weixin_34255055的博客 273

String Matching -- Brute Force + Rabin-Karp + KMP

String Matching 这个问题已经被做烂了... 下面是C语言实现集合. http://www-igm.univ-mlv.fr/~lecroq/string/ 留个爪~ 暴力解法:       暴力美啊~ """ Programmer : EOF Date : 2015.0

Jason Leaster | Rebuilding the tower of babel 1656

利用C++中的<string>类实现Brute-Force算法

        Brute-Force算法简称BF算法,即暴风(Brute Force)算法,是普通的模式匹配算法,BF算法的思想就是将目标串S的第一个字符与模式串T的第一个字符进行匹配,若相等,则继续比较S的第二个字符和 T的第二个字符;若不相等,则比较S的第二个字符和T的第一个字符,依次比较下去,直到得出最后的匹配结果。        BF算法是一种蛮力算法。#include&lt;strin...

Cholenm的博客 896

字符串匹配算法(Brute-Force)

      Brute-Force匹配算法是比较容易理解的字符串匹配算法,时间复杂度为O(M*N),为了更加清晰的理解该算法,我先来举个例子先。        字符串 text = "abgdbcfg";        字符串 str = “bcf”;        判断text中是否包含bcf,text中的第一位a与str中的第一位b相比不相等,text移到第二位b与str中的第一位b相等...

Mr_Dai的博客 5903
上一篇: 中缀式与后缀式的转化 郁闷的C小加(一)
下一篇: 关于ArrayList以及简单哈希表中的一些常用的东东
chwei_cson
博客等级 码龄15年 62粉丝 25原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值