题目大意:求给出字符串的最大回文子串。
思路:最大回文子串是可以通过区间dp来求解,但是题目中数据并不大,可以直接暴力求。在此只给出dp的状态转移方程(其中dp[i][j]表示字符串从i到j是否是回文):dp[i][j] = (s[i]==s[j])? dp[i+1][j-1] : 0
代码:
#include <iostream>
#include <cstdio>
#include <cstring>
using namespace std;
string s;
bool judge(int l,int r){
for(int i=l,j=r;i<j;i++,j--)
if(s[i]!=s[j])
return false;
return true;
}
int main()
{
getline(cin,s);
int ans=1,len=s.length();
for(int i=0;i<len;i++)
for(int j=i+1;j<len;j++)
if(judge(i,j))
ans=max(ans,j-i+1);
printf("%d\n",ans);
return 0;
}