2012年4月14日

距离最长的有序对问题

摘要: 问题描述: 给定一个无序数组A[0..N-1],求出它的最长子串A[j..k],满足Aj < Ak。算法0: 直接枚举j、k,时间复杂度是O(n^2)。算法1: 注意到一个性质,对于子串A[i..j..m],如果有Ai <= Aj,那么A[i..j..m]必然优于A[j..m],j就不可能是起始点。所以所求子串的起始点j必然满足Ai > Aj (i < j),以下是求出所有起始点的算法:head_pos = [0]min = A[0] for i in range(1..N): if A[i] < min: head_pos.append(i... 阅读全文

posted @ 2012-04-14 16:30 RichSelian 阅读(304) 评论(0) 推荐(0) 编辑

导航