【发布时间】:2011-06-15 00:01:10
【问题描述】:
这是算法书(Vazirani 撰写)中的问题(6.7 ch6),与finding longest palindrome 的经典问题略有不同。我该如何解决这个问题?
一个子序列是回文的,如果它是 无论从左到右读还是一样 右到左。例如, 序列
A,C,G,T,G,T,C,A,A,A,A,T,C,G有许多回文子序列, 包括
A,C,G,C,A和A,A,A,A(另一方面,子序列A,C,T不是回文)。设计一个 采用序列x[1 ...n]并返回(长度)的算法 最长的回文子序列。它的 运行时间应该是O(n^2)
【问题讨论】:
-
我建议你看看这个,这是一篇关于在线性时间内找到最长回文的论文。 (akalin.cx/longest-palindrome-linear-time)
-
您所说的“子序列”似乎意味着
abcxxba具有abcba作为最长的回文子序列- 对吗?因为在那种情况下,接受的答案在我看来是错误的...... -
此处基于 C++ 的解决方案 - stackoverflow.com/a/44542960/1874627
标签: algorithm dynamic-programming palindrome