本文主要是介绍http://acm.hdu.edu.cn/showproblem.php?pid=3336,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
题目大意:
所有前缀在母串中出现的次数之和。
#include<stdio.h>
#define N 200009
int next[N];
int get_next(int len ,char *p){int i=0,j=-1,sum=0;next[i]=j;while(i<len){if(j==-1||p[i]==p[j]){i++;j++;next[i]=j;}else{j=next[j];}}for(i=1;i<=len;i++)if(next[i]>0)++sum;return sum+len;
}
int main()
{int t,n;char buff[N];scanf("%d",&t);getchar();while(t--){scanf("%d",&n);getchar();gets(buff);printf("%d\n",get_next(n,buff)%10007);}}
这篇关于http://acm.hdu.edu.cn/showproblem.php?pid=3336的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!