1040 Longest Symmetric String (25 分)
最长回文子串。
动态规划解法,时间复杂度:\(O(n^2)\)。
const int N=1010;
bool f[N][N];
string s;
int main()
{
getline(cin,s);
int res=0;
for(int i=s.size()-1;i>=0;i--)
for(int j=i;j<s.size();j++)
{
if(i == j) f[i][j]=true;
else if(i+1 == j) f[i][j]=(s[i]==s[j]);
else f[i][j]=f[i+1][j-1] && (s[i]==s[j]);
if(f[i][j]) res=max(res,j-i+1);
}
cout<<res<<endl;
//system("pause");
return 0;
}