#include <iostream>
using namespace std;
void huiwen(char* a)
{
if(a==NULL)
return ;
int len = strlen(a);
bool table[100][100] = {false};
int max, max_id;
int i,j;
for(i=0; i<len; i++)
table[i][i] = true;
for(i=0; i<len-1; i++)
if(a[i]==a[i+1])
{
table[i][i+1] = true;
max = 2;
max_id = i;
}
for(i=3; i<=len; i++)
{
for(j=0; j<=len-i; j++)
{
if(a[j]==a[i+j-1] && table[j+1][i+j-2])
{
table[j][i+j-1] = true;
max = i;
max_id = j;
}
}
}
for(i=max_id, j=0; j<max; j++, i++)
cout<<a[i];
cout<<endl;
}
int main()
{
char s[100];
while(1)
{
cin>>s;
huiwen(s);
}
return 0;
}
最长回文:动态规划
最新推荐文章于 2024-03-25 11:17:41 发布