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

水题一枚:next函数应用

View Code
 1 #include<stdio.h>
 2 #include<string.h>
 3 char str1[500005];
 4 int next[500005];
 5 int a[500005];
 6 void get_next(int x)
 7 {
 8     int i=0,j=-1;
 9     next[0]=-1;
10     while(i<x)
11     {
12         if(j==-1||str1[i]==str1[j])
13         {
14             i++;
15             j++;
16             //if(str1[i]!=str1[j])
17             next[i]=j;
18             //else next[i]=next[j];
19         }
20         else j=next[j];
21     }
22 }
23 
24 int main()
25 {
26     while(~scanf("%s",str1))
27     {
28         int len;
29         int len1=strlen(str1);
30         get_next(len1);
31         int k=0;
32         while(len1>0)
33         {
34             a[k++]=len1;
35             len1=next[len1];
36         }
37         for(int i=k-1;i>0;i--)
38         printf("%d ",a[i]);
39         printf("%d\n",a[0]);
40     }
41 }

 

相关文章:

  • 2021-08-25
  • 2022-02-19
  • 2022-02-22
  • 2022-02-07
  • 2022-03-02
猜你喜欢
  • 2022-12-23
  • 2022-03-04
  • 2021-10-01
  • 2022-12-23
  • 2021-11-05
  • 2021-08-11
  • 2021-07-26
相关资源
相似解决方案