来源:https://www.luogu.org/problemnew/show/P1435
用最长公共子序列。。。此子序列非连续。。。
1.再现re:下标越界。。。
2.啊啊啊啊啊啊提交错题目了啊啊啊啊啊啊啊啊交了三次啊啊啊啊啊啊真滴绝望啊啊啊啊啊啊啊啊
#include <cstdio>
#include <cstring>
#include <fstream>
#include <cstdlib>
#include <algorithm>
using namespace std;
const int maxSize=5000;
char c1[5001],c2[5001];
int f[maxSize+5][maxSize+5];
int n;
void dp()
{
int i,j;
for (i=1;i<=n;i++)
{
for (j=1;j<=n;j++)
{
if (c1[i]==c2[j])
f[i][j]=f[i-1][j-1]+1;
else
f[i][j]=max(f[i-1][j],f[i][j-1]);
}
}
}
int main()
{
int i;
freopen("a.txt","r",stdin);
scanf("%s",c1+1);
n=strlen(c1+1);
for (i=1;i<=n;i++)
{
c2[i]=c1[n-i+1];
// printf("%c",c2[i]);
}
dp();
printf("%d\n",n-f[n][n]);
return 0;
}