计蒜客习题:回文串
题目
样例
代码
#include<iostream>
using namespace std;
int dp[3010][3010],l1=1;
char s1[3010],s2[3010],c;
int main()
{
while(scanf("%c",&c)==1&&c!=10)
{
s1[l1]=c;
l1++;
}
l1--;
for(int i=1;i<=l1;i++)
{
s2[i]=s1[l1-i+1];
}
for(int i=1;i<=l1;i++)
for(int j=1;j<=l1;j++)
if(s1[i]==s2[j]) dp[i][j]=dp[i-1][j-1]+1;
else dp[i][j]=max(dp[i-1][j],dp[i][j-1]);
cout<<l1-dp[l1][l1];
return 0;
}