dp[i][j] = min(dp[i-1][j], dp[i][j-1]) + 1
这里不使用vector,回忆一下原始二维数组写法
#include<iostream>
#include<string>
using namespace std;
int main()
{
string str;
cin>>str;
int len = str.length();
int**vec = new int*[len];//vec[i][j]表示i到j之间的字符串要成为回文串所需要增加的最小字符数
for (int i=0;i<len;i++)
{
vec[i]=new int[len]();
}
int i,j,k;
for (k=2;k<=len;k++)//k表示相隔的长度
{
for (i=0;i+k-1<len;i++)
{
j=i+k-1;
if (str[i]==str[j])
{
vec[i][j]=vec[i+1][j-1];
}
else
{
vec[i][j]=min(vec[i+1][j],vec[i][j-1])+1;//在前面或者后面添加一个字符
}
}
}
cout<<vec[0][len-1];
return 0;
}