#include "string.h"#include "stdio.h" #include "stdlib.h" #include "io.h" #include "math.h" #include "time.h"#define OK 1#define ERROR 0#define TRUE 1...
分类:
编程语言 时间:
2015-07-07 14:31:09
阅读次数:
214
24、蛤蟆的数据结构笔记之二十四串的模式匹配算法
本篇名言:“燧石受到的敲打越厉害,发出的光就越灿烂。 --
马克思”
来看下两个算法,BF和KMP算法在串的模式匹配中实现。
欢迎转载,转载请标明出处:
1. BF算法
BF(Brute Force)算法是普通的模式匹配算法,BF算法的思想就是将目标串S的第一个字符与模式串T的第一个字符进行...
分类:
编程语言 时间:
2015-07-05 09:42:56
阅读次数:
194
怎么求串的模式值next[n]
(1)next[0]= -1 意义:任何串的第一个字符的模式值规定为-1。
(2)next[j]= -1 意义:模式串T中下标为j的字符,如果与首字符
相同,且j的前面的1—k个字符与开头的1—k
个字符不等(或者相等但T[k]==T[j])(1≤k)。
如:T=”abCabCad” 则 next[6]=-1,因T[3]=T[6]
...
分类:
编程语言 时间:
2015-06-28 21:42:14
阅读次数:
135
http://acm.hdu.edu.cn/showproblem.php?pid=2222求目标串出现了几个模式串. 1 #include 2 #include 3 #include 4 #include 5 #include 6 #include 7 #include ...
分类:
其他好文 时间:
2015-06-28 15:26:33
阅读次数:
114
题目链接:http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemCode=3430题意:给你n个编码后的模式串,和m个编码后的主串,求原来主串中含有模式串的个数思路:首先要将模式串解码成未编码前来建立ac自动机,然后解码主串扫描统计即可。co...
分类:
其他好文 时间:
2015-06-24 18:06:49
阅读次数:
138
hdu2457给定n个模式串, 和一个文本串问如果修改最少的字符串使得文本串不包含模式串,输出最少的次数,如果不能修改成功,则输出-1dp[i][j] 表示长度为i的字符串, 到达状态j(Trie图中的结点)所需要修改的最少次数那么dp[0->n][0->size] = INF , dp[0][ro...
分类:
其他好文 时间:
2015-06-22 22:05:06
阅读次数:
433
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=3065题意:有n个模式串,一个主串,求每个模式串在主串中出现的次数思路:AC自动机水题,trie树中也要维护标号,再开一个num数组记录出现次数即可,扫描匹配时注意跳转fail指针和root节点。code...
分类:
其他好文 时间:
2015-06-18 09:33:11
阅读次数:
118
http://hihocoder.com/problemset/problem/1015因为kmp算法只预处理b串,因而适合求解,给定一个串和一群不同的a串,问b是那些a串的子串.或者查找模式串在原串出现了几次. 1 #include 2 #include 3 #include 4 #incl...
分类:
编程语言 时间:
2015-06-16 12:55:58
阅读次数:
120
题目链接:BZOJ - 1009题目分析题目要求求出不包含给定字符串的长度为 n 的字符串的数量。既然这样,应该就是 KMP + DP ,用 f[i][j] 表示长度为 i ,匹配到模式串第 j 位的字符串个数,然后转移就是可以从第 j 位加上一个字符转移到另一个位置。然而..我并没有写过KMP +...
分类:
其他好文 时间:
2015-06-11 16:32:51
阅读次数:
257
Lua中的捕获捕获捕获是这样一种机制:可以使用模式串的一部分匹配目标串的一部分。将你想捕获的模式用圆括号括起来,就指定了一个捕获。在string.find使用捕获的时候,函数会返回捕获的值作为额外的结果。这常被用来将一个目标串拆分成多个:pair = "name = Anna"_, _, key, ...
分类:
其他好文 时间:
2015-06-04 20:44:49
阅读次数:
127