poj 2406 Power Strings kmp算法
此题用KMP算法做是最简单的,代码也很短。
#include
#include
char ch[1000005];
int f[1000005];
int main()
{
int i,j,k;
while(scanf("%s",ch)!=-1&&ch[0]!='.')
{
int m=strlen(ch);
for(i=1;
i
另外附上滔神的代码,快速读入,优化到32ms
#include
#includeint next[1111111] ;
void get_next ( char *s , int n )
{
int i , j ;
j = -1 ;
next[0] = -1 ;
for ( i = 1 ;
i < n ;
i ++ )
{
while ( j > -1 && s[j+1] != s[i] ) j = next[j] ;
if ( s[j+1] == s[i] ) j ++ ;
next[i] = j ;
}
}char s[1111111] ;
int main ()
{
int n , k ;
n = 0 ;
while ( s[n++] = getchar () )
{
while ( ( s[n++] = getchar () ) != 10 ) ;
n -- ;
if ( n == 1 && s[0] == '.' ) break ;
get_next ( s , n ) ;
k = next[n-1] ;
if ( n % ( n - 1 - k ) ) puts ( "1" ) ;
else printf ( "%d\n" , n / ( n - 1 - k ) ) ;
n = 0 ;
}
}
【poj 2406 Power Strings kmp算法】
推荐阅读
- Word|Word Power Made Easy Review 5
- 在OpenPOWER上安装红帽OpenShift3.11教程
- 模板 poj2947 Widget Factory 高斯消元
- POJ 1027 The Same Game 模拟题
- POJ 2728 Desert King(最优比率生成树)
- 图论|POJ1364 King 差分约束
- POJ 1364 King 差分约束系统
- poj2728|poj2728 Desert King
- SPOJ DISUBSTR - Distinct Substrings or SUBST1 - New Distinct Substrings 【不同子串数目】
- 开发文档|【资源共享】RK3288 使用POWER键开机