码迷,mamicode.com
首页 > 其他好文 > 详细

poj 2406

时间:2017-08-26 12:44:09      阅读:176      评论:0      收藏:0      [点我收藏+]

标签:++i   长度   字符串   sizeof   class   problem   http   bsp   style   

http://poj.org/problem?id=2406

题意:给你一个字符串,要你找到它是最多是由它多少个子串构成的

思路:如果这个字符串可以由它的子串构成,那么它的next[len]的这个值与len肯定是倍数关系,len-next[len]就是等于子串的长度

 1 #include <stdio.h>
 2 #include <string.h>
 3 const int maxn = 1e6+25;
 4 
 5 char str[maxn];
 6 int next[maxn];
 7 
 8 
 9 void getnext()
10 {
11     int len = strlen(str);
12     int i = 0,j = -1;
13     next[0] = -1;
14     while(i<len)
15     {
16         if(j==-1||str[i]==str[j])
17             next[++i] = ++j;
18         else
19             j = next[j];
20     }
21 }
22 
23 int main()
24 {
25     while(scanf("%s",str),str[0]!=.)
26     {
27         memset(next,0,sizeof(next));
28         getnext();
29         int ans = 1;
30         int len = strlen(str);
31         if(len%(len-next[len])!=0)
32             printf("1\n");
33         else
34             printf("%d\n",len/(len-next[len]));
35     }
36     return 0;
37 }

 

poj 2406

标签:++i   长度   字符串   sizeof   class   problem   http   bsp   style   

原文地址:http://www.cnblogs.com/Tree-dream/p/7434841.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!