dp--最长上升子序列LIS

 模板

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
        {
            for(int j = 1; j <= len; j++)
            {
                if(dp[j] > a[i])
                {
                    dp[j] = a[i];
                    break;
                }
            }
        }
    }
    return len;
}

 dp[len]代表长度为len时,a[i]的值

可以使用二分查找优化

posted on 2019-08-18 09:21  By_布衣  阅读(113)  评论(0编辑  收藏  举报

导航