美文网首页
关于最长上升子序列的相关讨论

关于最长上升子序列的相关讨论

作者: 风之旅人c | 来源:发表于2020-03-11 15:24 被阅读0次

最近,在题目中,遇见了最长不上升子序列的求解,所以,我特地思考了关于上升子序列的4中相关情况的求解。

最长严格上升子序列

int LIS(int n)
{
    int len = 1;
    dp[1] = a[1];
    
    for(int i=2; i<=n; ++i)
    {
        if(a[i] > dp[len])
        {
            
            dp[++len] = a[i];
        }
        else
        {
            int pos = lower_bound(dp, dp+len, a[i]) - dp;
            dp[pos] = a[i];
        }
    }
    return len;
}

最长不严格上升子序列

int LIS(int n)
{
    int len = 1;
    dp[1] = a[1];
    
    for(int i=2; i<=n; ++i)
    {
        if(a[i] > =dp[len])
        {
            
            dp[++len] = a[i];
        }
        else
        {
            int pos = upper_bound(dp, dp+len, a[i]) - dp;
            dp[pos] = a[i];
        }
    }
    return len;
}

最长严格下降子序列

int LIS(int n)
{
    int len = 1;
    dp[1] = a[1];
    
    for(int i=2; i<=n; ++i)
    {
        if(a[i] < dp[len])
        {
            
            dp[++len] = a[i];
        }
        else
        {
            int pos = lower_bound(dp, dp+len, a[i], greater<int>()) - dp;
            dp[pos] = a[i];
        }
    }
    return len;
}

最长不严格下降子序列

int LIS(int n)
{
    int len = 1;
    dp[1] = a[1];
    
    for(int i=2; i<=n; ++i)
    {
        if(a[i] <= dp[len])
        {
            
            dp[++len] = a[i];
        }
        else
        {
            int pos = upper_bound(dp, dp+len, a[i], greater<int>()) - dp;
            dp[pos] = a[i];
        }
    }
    return len;
}

相关文章

  • 关于最长上升子序列的相关讨论

    最近,在题目中,遇见了最长不上升子序列的求解,所以,我特地思考了关于上升子序列的4中相关情况的求解。 最长严格上升...

  • 公共子序列问题

    最长公共子序列 最长上升子序列 最长公共上升子序列

  • 算法思想之动态规划(六)——最长上升子序列问题

    前言 今天我们继续讨论经典的动态规划问题之最长上升子序列问题。 最长上升子序列问题 问题描述 给定一个数字序列A,...

  • LintCode 最长上升子序列

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

  • LintCode 最长上升子序列

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

  • LintCode 最长上升子序列

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

  • 最长上升子序列

    最长上升子序列(Longest Increasing Subsequence) 最长上升子序列方案数

  • 76. 最长上升子序列

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

  • 76. 最长上升子序列

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

  • lintcode 最长上升子序列

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

网友评论

      本文标题:关于最长上升子序列的相关讨论

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