最长递增子序列的解法有很多种,常用的有最长公共子序列法、动态规划、记录所有递增序列长度最大值的方法。最长公共子序列法:如例子中的数组A{5,6, 7, 1, 2, 8},则我们排序该数组得到数组A‘{1, 2, 5, 6, 7, 8},然后找出数组A和A’的最长公共子序列即可。显然这里最长公共子序列...
分类:
其他好文 时间:
2014-09-22 13:08:02
阅读次数:
239
动态规划基本题目,longest incresing sequence,找出序列中的最长递增子序列;例如给出序列{8,3,5,2,4,9,7,11},其中最长递增子序列为{3,5,9,11}或{3,5,7,11}或{3,4,9,11}或{3,4,7,11},子序列按元素递增,序列长度都为4;子问题:...
分类:
其他好文 时间:
2014-09-17 21:36:52
阅读次数:
231
测试用例:输入:1,-1,2,-3,4,-5,6,-7输出:4 1 int lis(int array[]){ 2 int n=sizeof(array); 3 //定义lisMax存放当前的最长递增序列 4 int nMax=1; 5 //list[i]中放着从ar...
分类:
其他好文 时间:
2014-09-15 22:32:29
阅读次数:
302
这题说的是给了k个串算出这k个串的最长公共子序列,这k个串每个串都是由1--n的数字组成的。将第一串的数字按照顺序重新编号为123...n 然后后面的串按照这个编号重新标号,就转化为下面每个串大最长递增子序列的问题,然后我们对于每个串计算出后面比他大的数然后建一条边(用邻接矩阵存)然后可以判断出从a...
分类:
其他好文 时间:
2014-09-10 15:42:50
阅读次数:
283
题意 求一个序列a某一位的最长递增序列(lis)和最长递减序列(lds)中最小值的最大值
开始直接用DP写了 然后就超时了 后来看到别人说要用二分把时间复杂度优化到O(n*logn) 果然如此 用一个栈s保存长度为i的LIS的最小尾部s[i] top为栈顶即当前LIS的长度 初始s[1]=a[1] top=1 遍历整个序列 当a[i]>s[top]时 a[i]入栈
...
分类:
其他好文 时间:
2014-08-25 17:10:14
阅读次数:
258
题目:POJ 2533 Longest Ordered Subsequence
Description
A numeric sequence of ai is ordered if a1 a2 aN. Let the subsequence of the given numeric sequence (a1, a2, ..., aN)
be any sequence (ai1...
分类:
其他好文 时间:
2014-08-19 16:37:44
阅读次数:
218
单调递增最长子序列
时间限制:3000 ms | 内存限制:65535 KB
难度:4
描述求一个字符串的最长递增子序列的长度
如:dabdbf最长递增子序列就是abdf,长度为4
输入第一行一个整数0
随后的n行,每行有一个字符串,该字符串的长度不会超过10000
输出输出字符串的最长递增子序列的长度
样例输入
3
aaa
ababc
abklm...
分类:
其他好文 时间:
2014-08-15 12:52:48
阅读次数:
206
最长上升子序列就是求给定序列的最长的递增序列,其中不要求序列的元素在原序列中保持连续。
为了方便理解,可以举个例子:
inta[] = {0,2,1,5,3,6,4,8,9,7}(数组下标从1开始)的一个最长的子序列1,3,4,7,9。
利用动态规划的思想,可以方便的求取这个解。
为了方便解释,我们定义dp(n)为长度为1至下标为n的最长子序列的长度(数组下标假设从1开始),{a[1],a...
分类:
其他好文 时间:
2014-08-13 14:55:17
阅读次数:
195
单调递增最长子序列
时间限制:3000 ms | 内存限制:65535 KB
难度:4
描述 求一个字符串的最长递增子序列的长度
如:dabdbf最长递增子序列就是abdf,长度为4
输入第一行一个整数0
随后的n行,每行有一个字符串,该字符串的长度不会超过10000输出输出字符串的最长递增子序列的长度样例输入
3
aaa
ababc
abklmncdefg
样例输出
1...
分类:
其他好文 时间:
2014-08-10 21:39:20
阅读次数:
299