#include #include int next[100005]; void getnext(char str[]) { int i = 1,j = 0; int len = strlen(str); next [0] = -1; while(i < len) { if(j == -1 || str[i] == str[j]) { i++; j++; next[i] = j; } else j = next[j]; } } int kmp(char str1[],char str2[]) { int i= 0,j = 0; int len1 = strlen(str1),len2 = strlen(str2); getnext(str2); while(i0) { printf("%s",str2); printf("%s\n",str1+x); } else { printf("%s",str1); printf("%s\n",str2+x); } } else if(x>y) { printf("%s",str1); printf("%s\n",str2+x); } else { printf("%s",str2); printf("%s\n",str1+y); } } return 0; }