摘要:
http://poj.org/problem?id=3461 基础KMP,要注意一次查找完成后,到下一可查找处继续匹配,这样才能保证得到最终个数。code:#include<cstdio>#include<cstring>charsubstr[10001];charstr[1000001];intnext[10001];intsublen,len,ans;voidget_next(){next[1]=0;intj=0;for(inti=2;i<=sublen;i++){while(j>0&&substr[j+1]!=substr[i])j=n 阅读全文
摘要:
http://poj.org/problem?id=2752 KMP的next数组应用。一句话,next[j]必须为满足str[1..next[j]] = str[j-next[j]+1..j]的最大值。 以abababa为例,next[7] = 5,则str[1..5] = str[3..7],显然str[3..5] = str[5..7]。 next[5] = 3,则 str[1..3] = str[3..5],根据上面所得可知str[1..3] = str[5..7]。 由于next数组的性质,显然上述对任意情况都是成立的,每个next保存的值都可使str[1..next[j]... 阅读全文