Light OJ 1033 Generating Palindromes (最长回文子串 区间DP)

来源:互联网 发布:刘邦心机 知乎 编辑:程序博客网 时间:2024/04/29 09:38

题意:给你一个字符串,问最少插入多少个字符能使其成为回文串。

解析:字符串长度n - 最长回文子串的长度。

[code]:

#include<cstdio>#include<cstring>#include<algorithm>using namespace std;char s[105];int n,dp[105][105];int main(){    int i,j,cas,T;    scanf("%d",&cas);    for(T = 1;T <= cas;T++){        scanf("%s",s+1);        n = strlen(s+1);        memset(dp,0,sizeof(dp));        for(i = n;i >= 1;i--){            dp[i][i] = 1;            for(j = i+1;j <= n;j++){                if(s[i]==s[j]) dp[i][j]=2+dp[i+1][j-1];                else dp[i][j] = max(dp[i][j-1],dp[i+1][j]);            }        }        printf("Case %d: %d\n",T,n-dp[1][n]);    }    return 0;}


0 0