思路:
#include <cstdio>
#include <iostream>
#include <string>
using namespace std;
string a, b;
int lena, lenb, maxn;
char c[100005];
bool Jud(int x)
{
for(int i = 1, j = x; i <= x / 2; i++, j--)
if(c[i] != c[j]) return 0;
return 1;
}
bool work(int x)
{
int k = 1;
for(int i = 0; i < lena; i++)
{
if(c[k] == a[i]) k++;
if(k > x) return 1;
}
return 0;
}
void dfs(int dep, int x)
{
if(Jud(dep) && work(dep)) maxn = max(maxn, dep);
for(int i = x; i < lenb; i++) c[dep + 1] = b[i], dfs(dep + 1, i + 1);
}
int main()
{
cin >> a >> b;
lena = a.size(); lenb = b.size();
if(lenb > lena)
{
for(int i = 0; i < lena; i++) c[i] = a[i];
for(int i = 0; i < lenb; i++) a[i] = b[i];
for(int i = 0; i < lena; i++) b[i] = c[i];
swap(lena, lenb);
}
dfs(0, 0);
printf("%d\n", maxn);
return 0;
}