随笔分类 -  字符串--KMP

摘要:链接next数组的巧妙应用 学弟出给学弟的学弟的题。。求最长的 是前缀也是后缀同时也是中缀的串 next的数组求的就是最长的前后缀 但是却不能求得中缀所以这里 就把尾部去掉之后再求 这样就可以保证是中缀了 先把所有既是前缀也是后缀的长度的求出来标记 然后再去掉尾部 求一下最大 既是前缀又是后缀的长度 1 #include 2 #include 3 #include 4 #include 5 #include 6 #include 7 #include 8 #include 9 using namespace std;10 #define INF 0xfffffff11 #define N 1. 阅读全文
posted @ 2014-02-15 16:14 _雨 阅读(742) 评论(3) 推荐(2) 编辑
摘要:http://poj.org/problem?id=1961对于next数组只能说略懂,其中精髓还是未完全领会大体是本串相同前缀与后缀的最大长度,读不懂?看串abcdab 这里所说前缀与后缀都为ab这题核心就一句话if((i+1)%(i-next[i])==0) 输出 1 #include 2 #include 3 #include 4 #include 5 #include 6 #include 7 #include 8 #include 9 using namespace std;10 #define INF 0xfffffff11 #define N 100001012 char s[. 阅读全文
posted @ 2014-01-17 21:16 _雨 阅读(624) 评论(0) 推荐(0) 编辑
摘要:View Code 1 #include 2 #include 3 char c1[1000011],c2[1000011]; 4 int next[1000011]; 5 int kmp() 6 { 7 int k = strlen(c1),i,j,y = -1; 8 memset(next,0,sizeof(next)); 9 next[0] = -1;10 for(i = 1; i -1&&c1[i]!=c1[y+1])13 y = next[y];14 if(c1[y+1]==c1[i])15 ... 阅读全文
posted @ 2012-07-30 22:00 _雨 阅读(316) 评论(0) 推荐(0) 编辑
摘要:http://acm.hdu.edu.cn/showproblem.php?pid=1867这题输出有点麻烦 两个KMP 找出从一个字符串开头到令一个字符串结尾匹配的最大长度 再根据字符串比较函数字典序输出View Code 1 #include 2 #include 3 char c1[100001],c2[200001],c3[100001],c4[200001]; 4 int next[100001]; 5 int kmp(char *a,char *b) 6 { 7 int k1 = strlen(a),k2 = strlen(b),i,j,y; 8 y = -1; ... 阅读全文
posted @ 2012-07-27 17:16 _雨 阅读(222) 评论(0) 推荐(0) 编辑

点击右上角即可分享
微信分享提示