题意:给你一个明文对密文的字母表,在给你一段截获信息,截获信息前半段是密文,后半段是明文,但不清楚它们的分界点在哪里,密文一定是完整的,明文可能是残缺的,求完整的信息串(即完整的密文+明文串)。
题解:KMP next函数的应用。
#include <cstdio> #include <cstring> #include <cstdlib> const int MAXN = 100010; char table[32]; char extable[32]; char ori[MAXN]; char aft[MAXN]; int next[MAXN]; int len; void init() { for ( int i = 0; i < 26; ++i ) extable[ table[i]-'a' ] = 'a' + i; len = strlen(ori); for ( int i = 0; i < len/2; ++i ) aft[i] = ori[i]; for ( int i = len/2; i < len; ++i ) aft[i] = table[ ori[i] - 'a' ]; aft[len] = '