美文网首页
12_6最长上升子序列LIS

12_6最长上升子序列LIS

作者: X_Y | 来源:发表于2017-10-25 14:48 被阅读31次

这是一个经典的LIS(即最长上升子序列)问题,请设计一个尽量优的解法求出序列的最长上升子序列的长度。

给定一个序列A及它的长度n(长度小于等于500),请返回LIS的长度。

测试样例:
[1,4,2,5,3],5
返回:3

class LongestIncreasingSubsequence {
public:
    int getLIS(vector<int> A, int n) {
        // write code here
        vector<int> dp(n, 0);
        dp[0] = 1;
        int lis = 0;
        for(int i=1; i<n; ++i){
            int base = 0;
            for(int j=i-1; j>=0; --j){
                if(A[i] > A[j]){
                    base = dp[j] > base ? dp[j] : base;
                }
            }
            dp[i] = base + 1;
            lis = dp[i] > lis ? dp[i] : lis;
        }
        return lis;
    }
};

相关文章

  • LintCode 最长上升子序列

    给定一个整数序列,找到最长上升子序列(LIS),返回LIS的长度。 说明 最长上升子序列的定义: 最长上升子序列问...

  • LintCode 最长上升子序列

    题目 给定一个整数序列,找到最长上升子序列(LIS),返回LIS的长度。 说明最长上升子序列的定义:最长上升子序列...

  • LintCode 最长上升子序列

    题目 给定一个整数序列,找到最长上升子序列(LIS),返回LIS的长度。说明最长上升子序列的定义:最长上升子序列问...

  • 76. 最长上升子序列

    描述 给定一个整数序列,找到最长上升子序列(LIS),返回LIS的长度。 说明 最长上升子序列的定义: 最长上升子...

  • 76. 最长上升子序列

    给定一个整数序列,找到最长上升子序列(LIS),返回LIS的长度。说明最长上升子序列的定义:最长上升子序列问题是在...

  • lintcode 最长上升子序列

    给定一个整数序列,找到最长上升子序列(LIS),返回LIS的长度。说明最长上升子序列的定义:最长上升子序列问题是在...

  • LintCode-最长上升子序列(LIS)

    最长上升子序列给定一个整数序列,找到最长上升子序列(LIS),返回LIS的长度。 样例给出 [5,4,1,2,3]...

  • 12_6最长上升子序列LIS

    这是一个经典的LIS(即最长上升子序列)问题,请设计一个尽量优的解法求出序列的最长上升子序列的长度。 给定一个序列...

  • 各种最x子序列

    最长上升子序列(LIS)问题:给定长度为n的序列a,从a中抽取出一个子序列,这个子序列需要单调递增。问最长的上升子...

  • 最长上升子序列

    算法简述 最长上升子序列(Longest Increasing Subsequence, 简称LIS)是dp中比较...

网友评论

      本文标题:12_6最长上升子序列LIS

      本文链接:https://www.haomeiwen.com/subject/zrpqpxtx.html