随笔分类 - KMP算法
摘要:http://acm.hdu.edu.cn/showproblem.php?pid=2072这是我第一次写的c++;当然是参考神牛的,库函数真是太强大了,我觉得一个很长的代码,用了几行代码就搞定了,看来以后要好好学习库函数#include<set>#include<iostream>#include<cstring>using namespace std;int main(){ set <string> st; string s=""; char c; while((c=getchar())!='#') { s
        阅读全文
            
摘要:http://acm.hdu.edu.cn/showproblem.php?pid=1358几天看了kmp,觉得其实挺有趣的,可是当自己做题的时候才知道,它的用法是很灵活的,当计算重复子串的时候最好next的下标为-1开始,并且要注意数组的大小,因为数组开小了,所以一直wa。。。代码:#include <stdio.h>#include <string.h>#include <stdlib.h>char s[1000000];int len,next[1000000];int main(){ int t=0,a; while(scanf("%d&q
        阅读全文
            
摘要:http://acm.hdu.edu.cn/showproblem.php?pid=1711做了KMP,感觉有点不懂为什么要next函数,最后问了涛神,懂了,原来next是找出自己重复的子串,只要有重复的就直接移动过去就可以了,第一次做KMP一a,这是赤裸裸的模版的,水题#include <stdio.h>#include <string.h>#include <stdlib.h>int n,m;int a[1000002],b[1000002],next[1000002];void getnext(){ int i=1,j=0; next[1]=0; wh
        阅读全文
            
摘要:http://acm.hdu.edu.cn/showproblem.php?pid=3336hdu 3336 Count the string 【经典 KMP】+【DP】【题意】给你一个字符串,然后让你把所有的前缀给找出来,并把它们在字符串中的出现次数相加,输出这个和【分析】找出前缀后,算出现次数,很明显的是一个单模式串匹配问题,KMP 可以很好的解决,不过如果直接这样暴力的话,O(n^2) 的复杂度还是不行的。。。因此,我们试着考虑 KMP 算法进行快速匹配的本质核心所在,其实就是 next[] 数组而这个的本质其实就是 S[1..next[i]]=S[i-next[i]+1...i]即模式
        阅读全文
            
摘要:http://acm.hdu.edu.cn/showproblem.php?pid=1686KMP算法,今天又到了好晚,不过今天总的来说收获还是很大的,做了好几道KMP的题目,呵呵,心情也还不错,这是一道纯模版题,感觉很简单,就是去b中找a的个数,当j=m的时候说明一个字符串匹配成功,然后求输出个数即可。。。#include <stdio.h>#include <string.h>#include <stdlib.h>int next[1000000],m,n;char a[1000000],b[1000000];void getnext(){ int i=
        阅读全文
            
                    
                
浙公网安备 33010602011771号