`
king_tt
  • 浏览: 2100847 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

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,就可以直接构造出回文串的后半部分了
要注意长度的奇偶性问题


代码

<script src="https://code.csdn.net/snippets/562.js" type="text/javascript"></script>



分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics