【DP】计算一个数组的最长递增子序列
2014-11-19 10:31
274 查看
题目: 计算一个数组的最长非递减子序列。
提示:设数组为vector<int> num,计算以num[i]结尾的最长递增子序列(i从0到length-1),在所有子序列中选出最长的一个,即为结果。
提示:设数组为vector<int> num,计算以num[i]结尾的最长递增子序列(i从0到length-1),在所有子序列中选出最长的一个,即为结果。
vector<int> LongestSubsequence(const vector<int> &num) { if (num.size() <= 1) return num; vector<int> longest(num.size(), 1); for (int i = 1; i < num.size(); i++) { if (num[i] >= num[i - 1]) longest[i] = longest[i - 1] + 1; } int max = longest[0],end=0; for (int i = 1; i < num.size(); i++) { if (longest[i]>max) { max = longest[i]; end = i; } } vector<int> res; for (int i = end - max + 1; i <= end; i++) res.push_back(num[i]); return res; }
相关文章推荐
- 求数组的最长递增子序列的长度
- 一维数组中最长递增子序列的长度(DP做法)
- 求一个数组的最长递减子序列比如{9,4,3,2,5,4,3,2}的最长递减子序列为{9,5, 4,3,2}
- 获取一个数组中最长的连续的元素序列。例如,给定了[31,6,32,1,3,2],最长的连续的元素序列是[1,2,3],返回其长度3
- 求一个数组的最长递减子序列 比如{9,4,3,2,5,4,3,2}的最长递减子序列为{9,5,4,3,2}
- 计算一个数组中最大子序列的和
- 给定一个长度为N的数组,找出一个最长的单调自增子序列(不一定连续,但是顺序不能乱). 第二解
- 【编程题目】求一个数组的最长递减子序列 比如{9,4,3,2,5,4,3,2}的最长递减子序列为{9,5, 4,3,2}
- 算法 - 求一个数组的最长递减子序列(C++)
- 一个无序整数数组中找到最长连续序列(Longest Consecutive Sequence)和两个元素使得相差最小
- 动态规划----求一个数组的最长增序列
- 大学时候想的一个算法——计算数组中最大和序列
- 求数组的最长递增子序列
- 算法题-数组的最长递增子序列
- 求一个数组的最长递减子序列
- 动态规划----求一个数组的最长递减序列
- 求一个数组的最长递减子序列
- (Relax 后缀数组1.2)POJ 3261 Milk Patterns(求一个长度为n的整数序列中,至少出现k次的子序列的最长的长度)
- 最长递增子序列!!!(DP ,二分)
- 求一个数组的最长递减子序列 比如{9,4,3,2,5,4,3,2}的最长递减子序列为{9,5,4,3,2}