标签:
KMP里里外外学了很多遍,然后从一位大牛那里学到了比较易懂的理解方法。
博客链接:http://www.matrix67.com/blog/archives/115
唉~KMP算法Next数组强大无比。
Next数组:
1 //next数组的求法 2 void getNext(int len) 3 { 4 int i=0,j=-1; 5 Next[0]=-1; 6 while(i<len) 7 { 8 if(j==-1||s[i]==s[j]) 9 { 10 i++; 11 j++; 12 Next[i]=j; 13 } 14 else 15 j=Next[j]; 16 } 17 }
模式匹配:
1 int find(int len1,int len2) 2 { 3 int i=0,j=0; 4 int sum=0; 5 while(j<len2&&i<len1) 6 { 7 if(j==-1||b[j]==a[i]) 8 { 9 i++;j++; 10 } 11 else 12 { 13 j=Next[j]; 14 } 15 if(j==len2) 16 { 17 sum++; 18 j=0; 19 } 20 } 21 return sum; 22 }
推荐题目:HDU 1711 HDU 1686 HDU 2087 HDU 3746
hust里的kuangbin专题
标签:
原文地址:http://www.cnblogs.com/ikids/p/4648515.html