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

从BIOS到路由器:深入拆解SPI NOR Flash的硬件连接与‘芯片内执行’(XIP)奥秘

本文深入解析SPI NOR Flash的硬件连接与‘芯片内执行’(XIP)技术,从BIOS到路由器的应用场景出发,详细介绍了其架构精髓、典型连接方案、时序设计及性能优化方法。通过实际案例和参数对比,帮助开发者掌握NOR Flash在嵌入式系统中的关键作用与设计技巧,提升电路设计效率与可靠性。

weixin_30522183的博客 492

OpenCV 之 特征匹配

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

fengweichangzi的博客 3398

三菱FX5U通信之CCLINK操作步骤

11. 连接 CC‐Link 用的端子排,连接 Ver.1.10 对应 CC‐Link 专用电缆。备注:1、以上对应的寄存器都是一一对应的,主站的点数可以比从站多,但是都需要一一对应起来。3.直接安装孔,用于直接安装的螺钉孔(2‐φ4.5,安装螺钉为 M4 螺钉)2.点阵 LED(显示模块中设置的站号和测试模式的内容)5.次段扩展连接器(连接扩展模块的扩展电缆的连接器)4.动作状态(显示 LED 显示模块的动作状态)10 电源连接器,用于连接电源电缆的连接器。1.扩展电缆(扩展时连接用的电缆)

ZXL622722的博客 6929

【大模型】SpringBoot整合LangChain4j实现RAG检索实战详解

SpringBoot整合LangChain4j实现RAG检索实战详解

congge 1万+

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

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

qq_52094801的博客 876

FPGA实现串口的任意字节数接收

基于FPGA的任意字节数(单字节、多字节)的串口(UART)接收,真的不来看看吗?

孤独的单刀 1万+

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

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

youcans的博客 1万+

手把手教你学Simulink——基于Simulink的全双工无线通信仿真建模示例

目录手把手教你学Simulink——基于Simulink的全双工无线通信仿真建模示例一、背景介绍二、所需工具和环境三、步骤详解步骤1:创建Simulink模型步骤2:设计输入信号步骤3:添加调制模块步骤4:添加自干扰消除模块步骤5:添加AWGN信道步骤6:添加接收端处理步骤7:添加解调模块步骤8:计算误码率(BER)步骤9:添加显示模块步骤10:设置仿真参数步骤11:运行仿真并分析结果四、总结 全双工(Full-Duplex)无线通信技术允许在同一频段上同时进行数据的发送和接收,这与传统的半双工(Half-

MHD0815的博客 182

YOLO26魔改:ICIP2026 SDTA|单深度转置注意力注入C2PSA,长程依赖与局部细节双增强,mAP提升显著

多尺度适配:SDTA的深度卷积与C2PSA的空间注意力结合,增强对多尺度目标的结构感知,改善遮挡与密集场景下的检测鲁棒性。

①答疑群聊服务;②YOLO大模型知识问答系统;③计算机视觉论文生成智能体; 293

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

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

a7691176的博客 3957

BEV和OCC学习-4:数据准备生成pkl文件(NuSences)

info[‘cam_instances’][‘CAM_XXX’][i][‘bbox_3d’]:长度为 7 的列表,以 (x, y, z, l, h, w, yaw) 的顺序表示实例的 3D 边界框。info[‘cam_instances’][‘CAM_XXX’][i][‘bbox’]:2D 边界框标注(3D 框投影的矩形框),顺序为 [x1, y1, x2, y2] 的列表。info[‘cam_instances’][‘CAM_XXX’][i][‘attr_label’]:实例的属性标签。

zfjBIT的专栏 1699

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

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

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

MCU-内部flash模拟成EepRom(重新梳理)

通过fee写数据Data的过程中,数据会mapping一个虚拟地址,这个虚拟地址就是你的身份,在向flash写数据的过程中会写入很多相同虚拟地址的不同数据,在读取或切页的过程中,遍历数据只会认为最下面第一个的虚拟地址所持有的数据是有效数据,其他的都是老数据,可以丢弃。模拟成eeprom的两个eep_page写数据逻辑就是,先在eep_page0写数据,eep_page0写满后,将eep_page0的有效数据copy到eep_page1,之后擦eep_page0;

xiandang8023的博客 711

SIMATIC S7-1200, S7-1500 PID 控制[手册]

SIMATIC S7-1200, S7-1500 PID 控制[手册]

Brute-force String Matching

复杂度

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

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

OpenCV学习笔记-brute_force特征匹配

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

云中寻雾的博客 6965

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

visio安装包

Microsoft Office Visio 是一款专业的制图软件。利用经过更新的形状、协作工具和数据链接图表,创建专业级图表以简化复杂的信息。

字符串匹配——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、付费专栏及课程。

余额充值