這道題我現在還很迷,只知道把字符串逆序,然後求兩個字符串的LCS,最後字符串的長度減去公共子串長度,就是答案。但是爲什麼是這樣呢?我很迷啊。。。。。。。。。。。。。。。who can tell me?
#include<iostream>
#include<algorithm>
#include<cstring>
#include<string>
using namespace std;
int dp[1005][1005];
int main()
{
string a;
cin>>a;
string b(a.rbegin(),a.rend());
memset(dp,0,sizeof(dp));
for(int i=1;i<=a.length();i++)
for(int j=1;j<=b.length();j++)
dp[i][j]=max(max(dp[i-1][j],dp[i][j-1]),dp[i-1][j-1]+(a[i-1]==b[j-1]?1:0));
cout<<a.length()-dp[a.length()][b.length()]<<endl;
}