【发布时间】:2014-03-23 04:09:45
【问题描述】:
这个问题可以只使用一个 dp 数组来解决吗? 这是来自 topcoder (http://community.topcoder.com/stat?c=problem_statement&pm=1259&rd=4493) 的曲折问题 如果连续数字之间的差异在正负之间严格交替,则数字序列称为之字形序列。第一个差异(如果存在)可以是正面的也可以是负面的。少于两个元素的序列通常是锯齿形序列。
例如,1,7,4,9,2,5 是锯齿形序列,因为差值 (6,-3,5,-7,3) 交替出现正负。相比之下,1,4,7,2,5 和 1,7,4,5,5 不是 zig-zag 序列,第一个是因为它的前两个差是正数,第二个是因为它的最后一个差是零。
给定一个整数序列,sequence,返回该序列的最长子序列的长度,即锯齿形序列。子序列是通过从原始序列中删除一些元素(可能为零)而获得的,其余元素保持原始顺序。
【问题讨论】:
-
所需的运行时间是多少?
-
你到底想要什么?如果您只想要一个数组,只需使用长度为 2n 的数组,其中 0-n 为 zag,n-2n 为 zig?
标签: algorithm dynamic-programming