【发布时间】:2017-09-01 05:17:45
【问题描述】:
如何为字符串的最长回文子序列找到所有可能的中间元素。 考虑到最长回文子序列的长度是奇数。
【问题讨论】:
-
你能分享一下你到目前为止的尝试吗?
标签: algorithm dynamic-programming
如何为字符串的最长回文子序列找到所有可能的中间元素。 考虑到最长回文子序列的长度是奇数。
【问题讨论】:
标签: algorithm dynamic-programming
您可以使用 Longest Palindromic Subsequence 的逻辑并针对您的情况进行扩展。
令DP(i,j,k)表示以j为中间元素且当前索引为i和k的最大答案。现在
if(i==j && j==k)
return 1;
if(S[i] == S[j])
DP(i,j,k) = 1 + DP(i+1, j, k-1)
DP(i,j,k) = max(DP(i,j,k), max(DP(i+1,j,k), DP(i,j,k-1)))
计算 i,j,k 的所有可能值,最大值就是您的答案。时间复杂度O(n^3)
【讨论】: