#include <bits/stdc++.h>
using namespace std;
int ans[1000][1000];
int dfs(string a)
{
string ra=a;
reverse(a.begin(),a.end());
memset(ans,0,sizeof(ans));
for(int i=0; i<a.size(); i++)
for(int j=0; j<a.size(); j++)
{
if(a[i]==ra[j])
{
ans[i+1][j+1]=ans[i][j]+1;
}
else
{
ans[i+1][j+1]=ans[i][j+1]>ans[i+1][j]?ans[i][j+1]:ans[i+1][j];
}
}
return ans[a.size()][a.size()];
}
int main()
{
string a;
while(cin>>a)
{
cout<<dfs(a)<<endl;
}
return 0;
}
输出最长回文子序列字符数
最新推荐文章于 2021-10-20 14:57:58 发布