#include <iostream>
#include <vector>
using namespace std;
vector<int> lengthOfLIS(vector<int>& nums) {
    int n = nums.size();
    vector<int> len(n, 1);
    vector<int> res;
    int value_max = len[0];
    int flag = -1;
    for (int i = 1; i < n; i++)
    {
        int lenmax = INT_MIN;
        for (int j = 0; j < i; j++)
            if (nums[j] < nums[i])
            {
                if (len[j] > lenmax)
                    lenmax = len[j];
                len[i] = lenmax + 1;
            }
        if (len[i] > value_max)
        {
            value_max = len[i];
            flag = i;
        }
    }
    res.push_back(nums[flag]);
    for(int i = flag - 1; i > 0; i--)
        if (nums[i] < nums[flag] && len[i] == len[flag] - 1)
        {
            res.push_back(nums[i]);
            flag = i;
        }
    return res;
}
int main()
{
    vector<int> nums = { 10, 9, 2, 5, 3, 7, 101, 18 };
    vector<int> res = lengthOfLIS(nums);
    for (vector<int>::iterator it = res.end(); it != res.begin();)
        cout << *(--it) << " ";
}
序列的最长单调递增子序列
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。
 平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。
推荐阅读更多精彩内容
- 1. 实验环境 操作系统:Mac 64运行内存:16GB编程语言:Java编译环境:Eclipse 2. 题目要求...
- 作者:寒小阳 时间:2013年9月。出处:http://blog.csdn.net/han_xiaoyang/ar...
- 题目链接难度:中等 类型: 动态规划 给定一个未排序的整数数组,找到最长递增子序列的个数。 示例...
- 年轻即出发... 简书:https://www.jianshu.com/u/7110a2ba6f9e 知乎:htt...