KMP算法
暮光乐鱼
这个作者很懒,什么都没留下…
展开
-
hdu 2203 亲和串
本题链接:点击打开链接题目大意: 其实这一题就是看将主字符串首尾相连一次会不会含有子字符串,若是相连一次没有,那么接下来相连多少次都只是前者的重复,也是不会出现的。 如此便可把主字符串首尾相连形成新的字符串,然后采用KMP算法来看其中有没有子字符串,本题关键是题意弄明白!!!之后就简单了,此题花费了将近两个小时才真正明白题意,快抓狂了,,,,哎,悲剧啊。原创 2015-08-07 20:49:04 · 422 阅读 · 0 评论 -
poj 2406 Power Strings
题目大意: 输入一个字符串,求该字符串是由多少个子字符串循环形成的,例如输入abcd,则应输出1;输入ababab,结果为3。解题思路: 利用KMP算法,求出该字符串的P值,即各字符对应的编号,然后根据定理:假设S的长度为len,则S存在循环子串,当且仅当,len可以被len - next[len]整除,最短循环子串为S[len -p[len]],循环次数原创 2015-08-07 15:41:16 · 410 阅读 · 0 评论 -
hdu 1686 Oulipo
本题链接:点击打开链接 本题是求一个主字符串中有多少个子字符串,先输入的是子字符串;本题解法呢,就是采用KMP算法,先对子字符串本身进行编号,首字符标为-1,第二个字符标为0,然后下一位的标法遵循一个准则:若前一位与其所对应下标对应的字符相等,则标记为前一个字符的下标值加一,若不等,则将前一位与刚所比较那个字符对应下标所对应的字符相比较,直至比较到子字符串首,若仍不等,则此字符的下原创 2015-08-07 11:51:35 · 474 阅读 · 0 评论 -
hdu 2087 剪花布条
本题链接:点击打开链接本题题意: 本题是求第一个字符串中包含多少第二个字符串,即求子字符串个数。解题思路: 本题可选用KMP算法,具体方法与原创 2015-08-07 18:54:28 · 412 阅读 · 0 评论 -
poj 2752 Seek the Name, Seek the Fame
本题大意: 本题是要找所输入的字符串所有的前缀和后缀相同的子串的尾部位置,例如输入abcabcabc,则应输出3,6,9.解题思路: 先使用KMP算法求出next数组,由next函数知,next[k]表示的是在k个字符处匹配失败,但如果是自身和自身比较的话,可以看出此k便是一个前缀的尾部,即所求的一个值,同理由j和next[j],便可找到所有失配的位原创 2015-08-07 17:41:55 · 405 阅读 · 0 评论 -
hpu 1695 问题 A 一道签到题(KMP算法的考察)
本题题意: 输入一个长度不超过200,数值不超过100的循环小数,求出小数点后的循环节,循环节长度,循环次数。解题思路: 本题为KMP算法的较全面的考察,首先将小数点后的数存放到一个数组中,并求出next数组,然后,由KMP算法可知,循环节长度为:【k-next[k]】;循环次数为【k/(k-next[k])】,知此,循环节也不难求了,按循环长度直接输原创 2015-08-08 16:14:59 · 775 阅读 · 0 评论 -
hpu 1897 CZY找句子
本题链接:点击打开链接本题大意: 输入一个N和一个M,第二行输入N个数值,第三行输入M个数值,M 解题思路: 使用KMP算法,求出next数组,然后进行比较,当首次出现子字符串时,输出主字符串的位置-子字符串的长度,因为从零开始编的号,故需加一。参考代码:#include//思路没变,但将str1,str2改成int型的就对了,不知道为何 #原创 2015-08-08 17:06:40 · 415 阅读 · 0 评论