51Nod1092 回文字符串-----求最长公共子序列

来源:互联网 发布:c语言位运算优先级 编辑:程序博客网 时间:2024/06/05 01:17

这题转化为求最长公共子序列。不详细说了

#include <iostream>#include <cstdio>#include <cstdlib>#include <cstring>#include <map>#include <algorithm>#include <cmath>#define PI 3.1415926#define E 2.718281828459#define MAXN 1005using namespace std;typedef long long LL;string ss,tt;int dp[MAXN][MAXN];int main(){//    freopen("in.txt","r",stdin);    while(cin>>ss)    {        tt = ss;        int n = ss.size();        memset(dp,0,sizeof(dp));        reverse(tt.begin(),tt.end());        for(int i = 0; i < ss.size(); i++)        {            for(int j = 0; j < tt.size(); j++)            {                if(ss[i] == tt[j])dp[i+1][j + 1] = dp[i][j] + 1;                else dp[i+1][j+1] = max(dp[i][j+1],dp[i+1][j]);            }        }        printf("%d\n",n - dp[n][n]);    }    return 0;}


0 0