码迷,mamicode.com
首页 > 其他好文 > 详细

51nod 1092(lcs)回文字符串

时间:2017-11-07 20:54:22      阅读:212      评论:0      收藏:0      [点我收藏+]

标签:pac   最长公共子序列   lcs   out   std   ++   har   string   代码   

题目:给你一个字符串,问添加最少的字符数目,使之成为回文串

解题思路:将字符串倒置,求出字符串和倒置串的最长公共子序列,字符串的长度减去lcs的长度就是了。。

代码:#include<iostream>
#include<algorithm>
#include<cstring>
#define maxn 1005
using namespace std;
int dp[maxn][maxn];
char a[maxn];
char b[maxn];
int main()
{
    int n,m,i,j;
    int t;
    cin>>a;
    n=strlen(a);
    t=n-1;
    for(i=0;i<n;i++)
    {
        b[t]=a[i];
        t--;
    }
    //cout<<b<<endl;
    for(i=1;i<=n;i++)
    {
        for(j=1;j<=n;j++)
        {
            if(a[i-1]==b[j-1])
                dp[i][j]=dp[i-1][j-1]+1;
            else
            {
                dp[i][j]=max(dp[i-1][j],dp[i][j-1]);
            }
        }
    }
    cout<<n-dp[n][n]<<endl;
}

51nod 1092(lcs)回文字符串

标签:pac   最长公共子序列   lcs   out   std   ++   har   string   代码   

原文地址:http://www.cnblogs.com/huangdao/p/7800777.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!