我遇到了几个类似的问题,其中集合中有几个项目 e i = {w i ,h i } 对于i=0..n
,您必须找到最长的系列,以便 w m > w m + 1 和 h m >对于m
的每个成功值,h m + 1 。
这听起来很熟悉吗?
任何人都可以指出一个可能处理类似问题的特定算法吗?
答案 0 :(得分:2)
一种方法是构建有向无环图,其具有用于每个ei的节点和从ei到ej的边缘iff ej> ei(从你在上面的意义上说)。然后是find the longest path in this DAG。
答案 1 :(得分:0)
您正在寻找增长最快的子序列,因此patience sorting可能是最佳选择。
当您实施此功能时,您需要编写自己的Comparator方法e_i < e_j
当且仅当w_i < w_j
和h_i < h_j
时。您有部分订单而不是总订单的事实不会改变算法。