2013年3月24日

摘要: 给定一个长度为N的数组,找出一个最长的单调自增子序列(不一定连续,但是顺序不能乱)。从一列数中筛除尽可能少的数使得从左往右看,这些数是从小到大再从大到小的(网易)。1、思路: 定义L(i):以ai为最后一个元素的最长子序列的长度。当i=1或ai<min{a1,a2,...,a(i-1)}时,L(i)=1; 当1≤j≤i-1且aj<ai时,L(i)=max{L(j)}+1。时间复杂度O(n2)。LIS 1 #include <iostream> 2 using namespace std; 3 #define len(a) (sizeof(a) / sizeof(a[0] 阅读全文
posted @ 2013-03-24 10:37 月moon鸟 阅读(408) 评论(0) 推荐(0) 编辑

导航