p-7-21回文串问题

#include<bits/stdc++.h>
using namespace std;
const int maxn=1000;
char s[maxn+10];
int d[maxn+10][maxn+10];
 
int dp(int i,int j){
    if(i>=j)return 0;
    int &ans=d[i][j];
    if(ans>=0)return ans;
    if(s[i]==s[j])return ans=dp(i+1,j-1);
    return ans=min(dp(i+1,j),dp(i,j-1))+1;
}
 
int main(){
    memset(d,-1,sizeof(d));
    scanf("%s",s+1);
    int n=strlen(s+1);
    cout<<dp(1,n);
}
发布了298 篇原创文章 · 获赞 153 · 访问量 1万+

猜你喜欢

转载自blog.csdn.net/qq_43192537/article/details/103681091