zoukankan      html  css  js  c++  java
  • uva 11404 Palindromic Subsequence(LCS回文串,最小字典序)


    本文出自   http://blog.csdn.net/shuangde800



    题目: 点击打开链接


    题目大意

    给一个字符串,输出它的最长回文串,如果有多个结果,输出字典序最小的。


    思路

    我们都知道把一个字符串逆序后和原字符串进最长公共子序列,可以计算出它的最长回文串长度。
    但是这题不仅要输出回文串,而且还要求是字典序最小的,所以挺难搞的。

    设str1是正序字符串,str2是逆序后的字符串
    f[i][j].len 表示str1的前i位,str2的前j位,最长公共子串的长度
    f[i][j].str 表示str1的前i位,str2的前j位,最长公共子串的最小字典序的字符串

    状态转移和正常的LCS差不多,只不过增加了记录字典序最小的字符串

    但是最终的f[i][j].str却并不一定是答案,因为计算出来的最长公共子序列不一定就是回文串

    例如:
    kfclbckibbibjccbej
    jebccjbibbikcblcfk

    bcibbibc是他们的LCS,但是却不是回文串


    但是它的前len/2个一定是回文串的前半部分
    知道了前len/2,就可以直接构造出回文串的后半部分了
    要注意长度的奇偶性问题


    代码

     



  • 相关阅读:
    SDOI2016游戏
    李超线段树
    SDOI2016数字配对
    SDOI2016储能表
    ! JOISC2020DAY3星座3
    JOISC2020DAY2有趣的 Joitter 交友
    第十天学习内容 函数
    第九天学习内容 结构体
    第八天学习内容 集合
    第七天学习内容 数组
  • 原文地址:https://www.cnblogs.com/bbsno1/p/3253700.html
Copyright © 2011-2022 走看看