Time Limit: 15000MS | Memory Limit: 65536K | |
Total Submissions: 3280 | Accepted: 1188 |
Description
Input
Output
Sample Input
abcbabcbabcba abacacbaaaab END
Sample Output
Case 1: 13 Case 2: 6
1 #include <iostream> 2 #include <stdio.h> 3 #include <string.h> 4 using namespace std; 5 char a[2100000]; 6 int p[21000000],t; 7 int fun() 8 { 9 int i,r=0,c=0,max=0; 10 p[0]=0; 11 for(i=1;i<t;i++) 12 { 13 p[i]=r>i?(r-i<p[(c<<1)-i]?r-i:p[(c<<1)-i]):0; 14 while(a[i+p[i]+1]==a[i-p[i]-1])p[i]++; 15 max=max>p[i]?max:p[i]; 16 if(p[i]+i>r) 17 { 18 r=p[i]+i; 19 c=i; 20 } 21 } 22 return max; 23 } 24 int main() 25 { 26 char x; 27 int tt=1; 28 while(1) 29 { 30 t=0; 31 a[t++]=‘#‘; 32 while(x=getchar()) 33 { 34 if(x==‘\n‘)break; 35 a[t++]=‘&‘; 36 a[t++]=x; 37 } 38 a[t++]=‘&‘; 39 if(a[2]==‘E‘)break; 40 printf("Case %d: %d\n",tt++,fun()); 41 } 42 }
Palindrome poj3974,布布扣,bubuko.com
原文:http://www.cnblogs.com/ERKE/p/3597331.html