![](https://img-blog.csdnimg.cn/20201014180756925.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
ACM算法之字符串匹配
文章平均质量分 71
Tander_Tang
喜欢数学,喜欢算法,喜欢编程,喜欢计算机。
展开
-
HDU1686
这个题目是字符串匹配算法的入门题。题目如下:OulipoTime Limit: 3000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total Submission(s): 8961 Accepted Submission(s): 3619Problem Descript原创 2016-03-17 20:37:53 · 350 阅读 · 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 · 541 阅读 · 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 · 563 阅读 · 0 评论 -
hdu3746 Cyclic Nacklace
看好半天才明白题意。题目大意是说给定一个串,需要在两端加上一些字符,求最少加上多少字符可以使得这个串成为周期循环串。由于要构成环,所以在两端加字符和在一端加其实没什么区别,于是我们只考虑在右端加字符。其实这就是KMP算法中的Next表的应用,所以需要很好的理解Next表格的含义。 先来回顾下Next[j]的含义。设模式串为P[0...m-1],则Next[j]表示P的前缀串P[0原创 2016-03-20 11:25:53 · 303 阅读 · 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 · 458 阅读 · 0 评论