题意:给你一个字串,告诉你它在原串中出现的位置让你求原串的种类数。解题思路:KMP 性质的应用,有点类似于http://www.cnblogs.com/zyue/p/4423049.html 这题。解题代码: 1 // File Name: d.cpp 2 // Author: darkdrea.....
分类:
其他好文 时间:
2015-04-15 18:31:02
阅读次数:
239
题目链接:点击打开链接
题意:
用小写字母构造n长的串S,m个要求
字符串P
下面m个位置。a1, a2···am(输入有序)
要使得字符串S的以ai 开头且后面是一个P串。
问构造的方法数
思路:
实际上,对于ai, ai+1 ,两个位置,如果这两个位置会相互影响(即 ai+1 - ai
复制一个和P一样的串P‘
把P放在ai位置,把P‘放在ai+1位置,那么只需要判断一下...
分类:
其他好文 时间:
2015-04-15 14:56:06
阅读次数:
117
#include #include const int N = 1000000 + 5;char s[N],t[N];int lens,lent;int next[N];void get_fail() { next[0] = -1; for (int i = 1,j = -1; i < ...
分类:
编程语言 时间:
2015-04-14 22:49:26
阅读次数:
139
KMP算法理解
字符串匹配算法之KMP算法一直以来都很难理解,虽然知道要减少不必要的匹配,但是仍然不懂里面的思想,即使看着代码。后来看到(2)中博客中的解释才清晰了许多,
不至于在什么DFA,前缀表,部分匹配表等概念中迷失自己。主要的指导思想在于当发生不匹配的时候如何更有效的利用现在已经匹配的字符串的信息来加速移动过程,
部分匹配表的存在正是挖掘一个字符串中前缀和后缀中最长公共串,比...
分类:
编程语言 时间:
2015-04-14 21:33:53
阅读次数:
207
原文:http://blog.csdn.net/v_july_v/article/details/7041827从头到尾彻底理解KMP1. 引言 本KMP原文最初写于2年多前的2011年12月,因当时初次接触KMP,思路混乱导致写也写得混乱。所以一直想找机会重新写下KMP,但苦于一直以来对KMP的....
分类:
其他好文 时间:
2015-04-13 22:17:14
阅读次数:
162
由于KMP算法比较难,所以建议初学者分两个阶段学习。
第一个阶段先理解算法思想,可以参考这篇文章:点击打开链接
第二个阶段,理解算法的具体实现,本文主要讲解这部分,需要注意的地方都在程序里了,自己看吧
程序(调试通过):
#include
#include
int KMP(char* s, char* pattern, int start, int next[]);
void...
分类:
编程语言 时间:
2015-04-13 21:00:12
阅读次数:
214
解题思路:用next数组进行跳转次数统计。解题代码: 1 // File Name: d.cpp 2 // Author: darkdream 3 // Created Time: 2015年04月12日 星期日 19时40分52秒 4 5 #include 6 #include 7 #inclu....
分类:
其他好文 时间:
2015-04-13 20:46:20
阅读次数:
123
首先推荐这篇KMP思想的介绍:字符串匹配的KMP算法
KMP代码的关键是:
1、得到搜索串每个字符的匹配值
2、当字符匹配失败时的转移
(搜索串指搜索目标串。)
1:
第一个循环:遍历每个字符,表示搜索的是 该字符及之前所有字符组成的串。
第二个循环:遍历所有长度的子串。
第三个循环:比较子串是否相同。
搜索的目标是:所有相同的子串中最长字串的长度。所以维护一...
分类:
其他好文 时间:
2015-04-13 09:39:22
阅读次数:
114
在看string的find函数时,本来想看看find的效率如何,突然发现kmp算法有点忘了,做个笔记。看了几个blog感觉不是很有感觉(主要是标号和我学的不一样,不习惯),看了严蔚敏的视频,把感觉找回来了。next[j]的值就是j之前字符串与最开始字符串的最长匹配字符串的长度+1。找了严蔚敏的几个测...
分类:
编程语言 时间:
2015-04-12 21:02:24
阅读次数:
204
杭电2594字符串匹配,java实现,绝对不超内存,不超时!!...
分类:
编程语言 时间:
2015-04-12 00:04:34
阅读次数:
234