标签:
http://acm.hdu.edu.cn/showproblem.php?pid=2594
Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)
Total Submission(s): 4756 Accepted Submission(s): 1732
#include<stdio.h> #include<string.h> #include<iostream> #include<stack> using namespace std; #define N 100050 int Next[N]; void FindNext(char S[]) { int i=0, j=-1; int Slen = strlen(S); Next[0] = -1; while(i<Slen) { if(j==-1 || S[i]==S[j]) Next[++i] = ++j; else j = Next[j]; } } int main() { char s1[N], s2[N]; while(scanf("%s%s", s1, s2)!=EOF) { int len1=strlen(s1), len2=strlen(s2); int Min = min(len1, len2); char S[N], s[N]; strcpy(s, s1); strcat(s1, s2); FindNext(s1); int len = strlen(s1); if(Next[len]==0 && len>2) printf("0\n"); else if(Next[len]>Min) { if(len1>len2) printf("%s %d\n", s2, len2); else printf("%s %d\n", s, len1); } else { memset(S, 0, sizeof(S)); strncpy(S, s1, Next[len]); printf("%s %d\n", S, Next[len]); } } return 0; }
(KMP)Simpsons’ Hidden Talents -- hdu -- 2594
标签:
原文地址:http://www.cnblogs.com/YY56/p/4837148.html