
ACM算法之字符串匹配
文章平均质量分 74
Tander_Tang
喜欢数学,喜欢算法,喜欢编程,喜欢计算机。
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
HDU1686
这个题目是字符串匹配算法的入门题。题目如下: Oulipo Time Limit: 3000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) Total Submission(s): 8961 Accepted Submission(s): 3619 Problem Descript原创 2016-03-17 20:37:53 · 406 阅读 · 0 评论 -
朴素字符串匹配与Karbin-Karp算法
字符串的精度匹配就是在文本T中找出模式P的精确副本,并求出匹配的位置下标。即如果P[0...m-1]==T[k...k+m-1] ,则称P与T的子序列匹配成功。我们要找出所有匹配成功的k。 朴素字符串匹配方法很简单。从文本T的第一个字母和模式P的第一个字母开始比较。如果不匹配,就从T的第二个字母开始匹配,依次类推,不保留所有有用得信息。设P和T的长度分别为m和n .这原创 2016-03-17 23:05:37 · 608 阅读 · 0 评论 -
KMP算法
KMP算法的全称为:Knuth-Morris-Pratt 。朴素算法效率不高根本原因在于进行了多次重复的比较,没有充分利用已匹配的字符的信息。设文本为T,匹配模式为P;例如: T : a b a b c d a b b a b a b a d P : a b a b a b a 上面模式P与文本匹配,在从开始匹配到字符T[4]!=P[4]时,普通原创 2016-03-18 11:18:39 · 721 阅读 · 0 评论 -
hdu3746 Cyclic Nacklace
看好半天才明白题意。题目大意是说给定一个串,需要在两端加上一些字符,求最少加上多少字符可以使得这个串成为周期循环串。由于要构成环,所以在两端加字符和在一端加其实没什么区别,于是我们只考虑在右端加字符。其实这就是KMP算法中的Next表的应用,所以需要很好的理解Next表格的含义。 先来回顾下Next[j]的含义。设模式串为P[0...m-1],则Next[j]表示P的前缀串P[0原创 2016-03-20 11:25:53 · 355 阅读 · 0 评论 -
hdu3608最长回文子串
首先做这个题目时候以为是动态规划,可惜的是超时了。虽然超时了,但还是先说说动态规划。设原串为s用DP[i,j]表示s[i...j]中最大回文字串的长度,则DP[i,j]的子问题可以划分为DP[i+1,j],DP[i,j-1],以及DP[i+1,j-1].当然还需要一个数组flag[i,j]来记录状态。若flag[i,j]=1,则它表示在 s[i,j]中两个端点字符s[i】与s[j] 是s[i..j原创 2016-03-20 12:41:26 · 585 阅读 · 0 评论