版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/qq_42391248/article/details/84699566
这道题我现在还很迷,只知道把字符串逆序,然后求两个字符串的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;
}