【发布时间】:2014-10-14 05:25:41
【问题描述】:
我看过一些关于最长单调递增子序列算法的讨论。但我的情况有点不同。
双递增子序列定义如下: 子序列的第一部分和第二部分都是单调递增的子序列。
例如:
序列 10,19,8,12 是;
序列10,19,28,33是;
序列10,19,28,28是;
序列 10,19,8,2 不是; 序列 10,19,8,8 不是
另一个满足条件的序列是:
1,3,5,7,9,10, 6,9,11,17,28,30;
所以第一部分 1,3,5,7,9,10 是严格单调递增的;第二部分 6,9,11,17,28,30 也是如此。 原始序列可能类似于:
1,99,3,98,5,97,7,96, 9,95,10,6,89,9,88,11,87, 17,86,28,85,30
我们能找到一个 little-o(n^2)-time 算法吗?
【问题讨论】:
-
如何 10,19,28,28 “是”,而 10,19,8,8 “不是”?
-
(@user1990169: 10,19,8,8 “不是”(双倍)严格增加。)(哎呀 - 因为子序列不一定连续而下降。再次。)
-
(“原始序列”示例中的第一个“bold 子序列”不是最大的(可以包括 94 - 7 到 9 可以很好地分隔两个递增的子序列)) - > 除了严格递增之外,对组成子序列的原始序列的元素是否有限制(可能两者都没有元素)? 2、1、4、3、6、5、8、7呢? 1,2,3,3,3,3,3,3,4,5?
-
@greybeard 抱歉我又修改了。而且我相信 user2040251 提供了一个有价值的解决方案。谢谢!
标签: algorithm math data-structures computer-science