zoukankan      html  css  js  c++  java
  • hdu1153 dp回文

    这题没想到用反串LCS,算是回顾了LCS吧

    lcs最长子序列,刚开始忘了还以为是连续的子序列,额...搞了好久,现在应该不会忘了,还回顾了滚动数组,原来是上次还是不稳呀

    现在求构成回文需要的min,转化为 n-原序列最大回文子序列

    突然想起来好像在算法导论看到过用lcs求回文=.=

    //lcs求回文
    #include <iostream>
    #include <cstdio>
    #include <cstdlib>
    #include <cmath>
    #include <cstring>
    #include <algorithm>
    #include <string>
    #include <stack>
    #include <queue>
    
    
    const int inf = (1<<31)-1;
    const int MAXN = 5e3+10;
    using namespace std;
    int dp[MAXN][2];
    char s1[MAXN],s2[MAXN];
    
    int main(){
        int n;
        while(~scanf("%d",&n)){
            scanf("%s",s1);
            for(int i=0;i<n;i++)
                s2[i] = s1[n-i-1];
           // printf("%s
    ",s2);
            memset(dp,0,sizeof(dp));
            for(int i=1;i<=n;i++){
                for(int j=1;j<=n;j++){
                    if(s1[i-1]==s2[j-1])
                        dp[j][i%2] = dp[j-1][(i-1)%2]+1;
                    else
                        dp[j][i%2] = max(dp[j-1][i%2],dp[j][(i-1)%2]);
                }
            }
            cout<<n-dp[n][n%2]<<endl;
        }
        return 0;
    }
    //14
    //aababaaaabbbba
    //abbbbaaaababaa
    //14
    //abbbbaaaababaa
    //aababaaaabbbba
    View Code
    在一个谎言的国度,沉默就是英雄
  • 相关阅读:
    数据可视化——Matplotlib模块入门
    小甲鱼第23,24课后练习
    小甲鱼第28课课后练习
    小甲鱼第27课课后练习
    小甲鱼第25课课后练习
    小甲鱼第21课课后练习
    Java:泛型(一)
    决心考研之后
    Java:null
    树:哈夫曼编码解码及压缩存储
  • 原文地址:https://www.cnblogs.com/EdsonLin/p/5392393.html
Copyright © 2011-2022 走看看