使用贪心算法查找ZIG-ZAG序列

时间:2012-04-26 18:17:08

标签: greedy

如果出现以下情况,则整数序列X = x1,x2 ...,xn定义为ZIG-ZAG:

xi<如果xi是奇数,则xi + 1 xi>如果xi是偶数,则xi + 1

我需要一个贪心算法来查找给定序列中最大ZIG-ZAG子序列的维数

编辑: 有一个例子:
Y =(3,4,8,5,6,2)
对于3,8,5,6,2或4,8,5,6,2

输出应为5

2 个答案:

答案 0 :(得分:0)

只需运行序列并检查每个元素是否满足条件。

你可以尝试解释greedy algorithms与此有什么关系吗?

编辑:好的,现在它在原版中更有意义。 不幸的是,我无法想到一个好的解决方案。

答案 1 :(得分:0)

你可以使用这个算法(只需将o(dd)和e(ven)数组初始化为1):

for i=1 to n 
for j=i-1 down to 1 do
if a[i]>a[j]  and o[i]< e[j]+1 then o[i]=e[j]+1
else if a[i]<a[j] and e[i]<o[j]+1 then e[i]=o[j]+1

答案是o和e数组的最大值。