#include#includevoid getNext(int *Next,char* src){	int i,j;	Next[0]=-1;	i=0;	j=-1;	int N=strlen(src);	while(i<N-1){ if(j==-1||src[i]==src[j]){ ++i;...
                            
                            
                                分类:
其他好文   时间:
2014-07-16 21:33:22   
                                阅读次数:
222
                             
                    
                        
                            
                            
                                String ProblemTime Limit: 2000/1000 MS (Java/Others)Memory Limit: 32768/32768 K (Java/Others)Total Submission(s): 1492Accepted Submission(s): 662Probl...
                            
                            
                                分类:
其他好文   时间:
2014-07-11 22:25:45   
                                阅读次数:
191
                             
                    
                        
                            
                            
                                链接:http://acm.hdu.edu.cn/showproblem.php?pid=4333
题意:给以数字字符串,移动最后若干位到最前边,统计得到的数字有多少比原来大,有多少和原来相同,有多少比原来的小。
思路:拓展KMP中的next数组标记的是子串和母串的公共前缀的长度,要将字符串长度变成原来二倍,这样如果变换后不是完全相同的数字也即公共前缀长度大于等于字符串长度,那么字母串公共前缀...
                            
                            
                                分类:
其他好文   时间:
2014-07-04 08:42:50   
                                阅读次数:
355
                             
                    
                        
                            
                            
                                KMP算法是通过分析模式字符串,预先计算每个位置发生不匹配的时候,所需GOTO的下一个比较位置,整理出来一个next数组,然后在上面的算法中使用。本全局匹配KMP算法针对串的堆式存储数据结构# define MAXSIZE 45 //固定next数组的长度# define OK 1# define....
                            
                            
                                分类:
其他好文   时间:
2014-06-27 22:29:03   
                                阅读次数:
677
                             
                    
                        
                            
                            
                                我们在一个母字符串中查找一个子字符串有很多方法。KMP是一种最常见的改进算法,它可以在匹配过程中失配的情况下,有效地多往后面跳几个字符,加快匹配速度。当然我们可以看到这个算法针对的是子串有对称属性,如果有对称属性,那么就需要向前查找是否有可以再次匹配的内容。在KMP算法中有个数组,叫做前缀数组,也有...
                            
                            
                                分类:
其他好文   时间:
2014-06-17 00:24:23   
                                阅读次数:
212
                             
                    
                        
                            
                            
                                背景朴素匹配算法太低效了。冗余过多,已经比较过的,没必要重复;可以从比较结果中推导出来的,也没必要再重复。核心主串不回溯,变化要匹配的串的下一次比较的位置。实现两个函数,一个提供next数组,即存储要匹配的串的每一个元素匹配失败后,下一次要比较的位置的数组。另一个实现匹配。java代码public 
...
                            
                            
                                分类:
其他好文   时间:
2014-06-10 11:32:20   
                                阅读次数:
239
                             
                    
                        
                            
                            
                                贴代码不是目的,讲解算法才是关键!!。解题的思路是使用了 KMP 算法,然而把并不是完整的KMP算法。只用到了它的next数组的求法。然而这正是KMP算法本身的关键所在。这里关键在于讲解next数组的思想。
在漫天飞的网络资料中,next数组的表示方法大致有两种:...
                            
                            
                                分类:
其他好文   时间:
2014-05-15 06:10:56   
                                阅读次数:
287
                             
                    
                        
                            
                            
                                题意:给一个字符串,计算所有前缀在字符串中出现的次数和。
解法:KMP计算出Next数组后,每个位置的Next数组不断往前递归,每次相应前缀次数就加1.
代码:/******************************************************
* author:xiefubao
************************************...
                            
                            
                                分类:
其他好文   时间:
2014-05-09 06:24:04   
                                阅读次数:
302
                             
                    
                        
                            
                            
                                题意:给一个字符串,问最长的一个子串A,他是前缀,同时是后缀,并且中间也出现过A。并且出现的三个A都不没有重叠部分。
解法:先KMP求出失配数组,然后将所有的是后缀且是前缀的打上标记,然后遍历整个next数组,(对于每个位置的next来说,一直next向前取就是找到此前缀的一个个是整个字符串前缀的后缀,比较绕)暴力枚举判断每个串的所有匹配前缀的后缀是否合法。
代码:/*****...
                            
                            
                                分类:
其他好文   时间:
2014-05-02 19:36:54   
                                阅读次数:
476
                             
                    
                        
                            
                            
                                在串匹配模式中,KMP算法较蛮力法是高效的算法,我觉得其中最重要的一点就是求next数组:看了很多资料才弄明白求next数组是怎么求的,我发现我的忘性真的比记性大很多,每次看到KMP算法求next数组都得花很长时间去看怎么求,虽然看了很多遍了,但还是容易忘,所以我今天非得把它记下来,这样我下次看到的...
                            
                            
                                分类:
其他好文   时间:
2014-04-29 19:26:58   
                                阅读次数:
429