Sunday算法模板
算法举例
#include<iostream>
#include<cstdio>
#include<cstring>
using namespace std;
int wei[]={};
int ans=,lend,lenc,tot=;//tot用于统计匹配次数,便于直观地与其他算法比较
char c[],d[];
void pei()
{
int w=;//记录d匹配失败以后向右移动的数量
while(w+lend<=lenc)
{
int i=;//正在匹配的位数
bool f=false;//默次数认匹配成功
while(i<=lend && f==false)
{
if(c[i+w]!=d[i])
f=true;//匹配失败
i++;tot++;// 匹配下一位,匹配次数+1
}
if(f==false)
{ans++;
cout<<i<<endl;
w++;}//当匹配成功的话就让b串整体右移一位,与a串的下一位进行匹配
else//匹配失败
{
i=lend+;// 直接匹配a串中b串再次出现的位置
if(wei[c[i+w]]==-)
w=w+i+;//没有出现过得话,就让b串整体右移lend+1位
else w=w+i-wei[c[w+i]];//如果出现过的话就跳到出现位置?
}
}
return;
}
int main()
{
gets(c);
gets(d);
lenc=strlen(c)-;
lend=strlen(d)-;
for(int i=;i<=;++i)wei[i]=-;
for(int i=;i<=lend;++i)
wei[d[i]]=i;//记录每一个字符出现的位置
pei();
if(ans)
cout<<ans<<endl<<tot;
else cout<<"mission failed";
return ;
}
Sunday算法模板的更多相关文章
- BF、KMP、BM、Sunday算法讲解
BF.KMP.BM.Sunday算法讲解 字串的定位操作通常称作串的模式匹配,是各种串处理系统中最重要的操作之一. 事实上也就是从一个母串中查找一模板串,判定是否存在. 现给出四种匹配算法包括BF(即 ...
- 数据结构 Sunday算法
Sunday算法是Daniel M.Sunday于1990年提出的字符串模式匹配算法.相对比较KMP和BM算法而言,简单了许多. Sunday算法的思想类似于BM算法中的坏字符思想,有点像其删减版.差 ...
- 字符串匹配 - sunday算法
常见的字符串匹配算法有BF.KMP(教科书中非常经典的).BM.Sunday算法 这里主要想介绍下性能比较好并且实现比较简单的Sunday算法 . 基本原理: 从前往后匹配,如果遇到不匹配情况判断母串 ...
- 文本比较算法三——SUNDAY 算法
SUNDAY 算法描述: 字符串查找算法中,最著名的两个是KMP算法(Knuth-Morris-Pratt)和BM算法(Boyer-Moore).两个算法在最坏情况下均具有线性的查找时间.但是在实用上 ...
- 匈牙利 算法&模板
匈牙利 算法 一. 算法简介 匈牙利算法是由匈牙利数学家Edmonds于1965年提出.该算法的核心就是寻找增广路径,它是一种用增广路径求二分图最大匹配的算法. 二分图的定义: 设G=(V,E)是一个 ...
- Tarjan 算法&模板
Tarjan 算法 一.算法简介 Tarjan 算法一种由Robert Tarjan提出的求解有向图强连通分量的算法,它能做到线性时间的复杂度. 我们定义: 如果两个顶点可以相互通达,则称两个顶点强连 ...
- hdu 2255 奔小康赚大钱--KM算法模板
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2255 题意:有N个人跟N个房子,每个人跟房子都有一定的距离,现在要让这N个人全部回到N个房子里面去,要 ...
- 字符串匹配的sunday算法
sunday算法核心思想:启发式移动搜索步长! SUNDAY 算法描述: 字符串查找算法中,最著名的两个是KMP算法(Knuth-Morris-Pratt)和BM算法(Boyer-Moore).这里介 ...
- POJ 1273 Drainage Ditches(网络流dinic算法模板)
POJ 1273给出M条边,N个点,求源点1到汇点N的最大流量. 本文主要就是附上dinic的模板,供以后参考. #include <iostream> #include <stdi ...
随机推荐
- [Codeforces 715C] Digit Tree
[题目链接] https://codeforces.com/contest/715/problem/C [算法] 考虑点分治 一条路径(x , y)合法当且仅当 : d(x) * 10 ^ dep(x ...
- bzoj4804
莫比乌斯反演 我不会推线性筛 留坑
- bzoj3676
后缀自动机+manacher 听说本质不同的回文串只有O(n)个 那么用manacher求出所有回文串,然后在sam上查找出现了几次就行了 sam的性质又忘了... manacher也忘了... #i ...
- 一、mysql简述
该套讲义参考动力节点郭鑫老师的mysql视频整理所得 1.DBMS--数据库管理系统 Data Base Management System eg: mysql数据库管理系统 2.DB--数据库/仓 ...
- html5 滚动小球
<html> <head> <meta charset="utf-8"/> </head> <body onkeydown=& ...
- 在junit格式的结果信息中只包含错误信息的修改方法
文件名称:suiteJunit.vm 文件路径:src\fitnesse\resources\templates 添加如下黑体部分内容: <?xml version="1.0" ...
- 在实战中使用nginx-rtmp遇到的TCP连接问题分析
在实战中使用nginx-rtmp遇到的TCP连接问题分析 背景 前段时间公司做了一次体育赛事的现场直播,网络由某通信公司负责搭建,主要测试5G CPE上行网络的带宽和稳定性,为了做到万无一失,他们同时 ...
- POJ3414(BFS+[手写队列])
贴一发自己写的手写队列-.. #include <stdio.h> #include <iostream> #include <string.h> #include ...
- U3D开发性能优化笔记(待增加版本.x)
http://blog.csdn.net/kaitiren/article/details/45071997 此总结由自己经验及网上收集整理优化内容 包括: .代码方面: .函数使用方面: .ui注意 ...
- WPF 中如何使得DataGrid的Column有鼠标点击相应
http://stackoverflow.com/questions/5895803/how-do-i-capture-click-events-on-a-datagrid-column-header ...