【发布时间】:2012-09-07 23:28:08
【问题描述】:
最长回文子序列。
回文是一些字母表上的非空字符串,向前和向后读取相同。回文的例子是所有长度为 1 的字符串、civic、racecar 和 aibohphobia(对回文的恐惧)。
给出一个有效的算法来找到作为给定输入字符串的子序列的最长回文。例如,给定输入“字符”,您的算法应该返回“caac”。
现在,我知道如何获得结果的长度了。如何获得结果的顺序?
def mylongest(self, i, j):
if j - i <= 1:
return j-i
else:
if self.sequence[i] == self.sequence[j]:
return self.mylongest(i+1,j-1) + 2
else:
return max (self.mylongest(i+1, j), self.mylongest(i, j-1))
【问题讨论】:
-
这是这里的作业吗? www.cs.usfca.edu/~galles/cs673/hw7.btreedp.pdf?
-
其实'carac'比'caac'长
-
这些问题只是得到结果的长度,我在上面显示。我想输出回文序列。我已经考虑了4个小时。但我还是没弄明白。