poj 1159 Palindrome (lcs,滚动数组)

来源:互联网 发布:cnc编程还是模具设计好 编辑:程序博客网 时间:2024/06/05 10:53
/*最少需要补充的字母数 = 原序列S的长度 —  S和S'的最长公共子串长度*/# include <stdio.h># include <algorithm># include <iostream># include <string.h>using namespace std;int dp[2][5010];///滚动数组int main(){    char a[5010];    char b[5010];    int i,j,k,len;    while(~scanf("%d",&len))    {        scanf("%s",a);        k=0;        for(i=len-1;i>=0;i--)            b[k++]=a[i];        memset(dp,0,sizeof(dp));        for(i=1;i<=len;i++)        {            for(j=1;j<=len;j++)            {                if(a[i-1]==b[j-1])                    dp[1][j]=dp[0][j-1]+1;                else                    dp[1][j]=max(dp[0][j],dp[1][j-1]);            }            for(j=1;j<=len;j++)                dp[0][j]=dp[1][j];        }        printf("%d\n",len-dp[1][len]);    }    return 0;}

1 0
原创粉丝点击