rt.代码如下: a是存储数,数组的a[40][]用于存储数的长度,maxn是最大回文数,b判断是否是回文数
#include"bits/stdc++.h"
using namespace std;
int a[41][10003];
int maxn[41];
bool b[10003];
int main()
{
memset(maxn,0,sizeof(maxn));
memset(b,true,sizeof(b));
int n,m;
string s;
scanf("%d",&n);
for (int i=1;i<=n;i++)
{
cin>>s;
m=s.size();
for (int j=1;j<=m;j++)
{
a[j][i]=int(s[j-1]);
}
a[40][i]=m;
}
for (int i=1;i<=n;i++)
{
for (int j=1;j<=a[40][i];j++)
{
if (a[j][i]!=a[a[40][i]-j][i])
{
b[i]=false;
continue;
}
}
}
for (int i=1;i<=n;i++)
{
if (b[i])
{
if (a[40][i]>maxn[40])
{
for (int j=1;j<=a[40][i];j++)
{
maxn[j]=a[j][i];
}
maxn[40]=a[40][i];
break;
}
if (a[40][i]==maxn[40])
{
for (int j=1;j<=maxn[40];j++)
{
if (a[j][i]>maxn[j])
{
for (int j=1;j<=a[40][i];j++)
{
maxn[j]=a[j][i];
}
maxn[40]=a[40][i];
continue;
}
if (a[j][i]<maxn[j])
{
continue;
}
}
}
}
}
for (int i=1;i<=maxn[40];i++)
{
printf("%d",maxn[i]);
}
return 0;
}