最长上升子序列

Posted Hunter丶安

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了最长上升子序列相关的知识,希望对你有一定的参考价值。

合唱队形题

题目分析 :分别求最长上升和下降子序列。

题目分析 :这道题差不多是个水题了,不过我在做题的被误导了,虽然结果正确却超时了。我们用上升子序列的时间复杂度是:O(n*n);

题目收获 :需要对时间复杂和空间复杂度进行深刻的重新理解。

AC代码 :

#include <iostream>
#include <algorithm>
#include <cstdio>
#include <cstring>
#define maxn 105
using namespace std;
int d[maxn],b[maxn],num;
int pepo[maxn];

int main()
{
    //freopen("in.txt", "r", stdin);
    scanf("%d", &num);
    memset(d, 0, sizeof(d));
    memset(b, 0, sizeof(b));
    for (int i = 1; i <= num; i++)
        scanf("%d", &pepo[i]);
    for (int i = 2; i <= num; i++)
        for (int j = 1; j < i; j++)
            if (pepo[i] > pepo[j])
                d[i] = max(d[i], d[j] + 1);
    for (int i = num - 1; i >= 1; i--)
        for (int j = num; j > i; j--)
            if (pepo[i] > pepo[j])
                b[i] = max(b[i], b[j] + 1);
    int ans = 0;
    for (int i = 1; i <= num; i++)
        ans = max(ans, b[i] + d[i]);
    printf("%d\n", num - ans - 1);
        return 0;
}

 

以上是关于最长上升子序列的主要内容,如果未能解决你的问题,请参考以下文章

刷题之最长公共/上升子序列问题

每日算法-05(最长上升子序列)

最长上升子序列

LIS LCS 最长上升子序列 最长公共子序列 ...

浅谈最长不下降子序列与最长上升子序列

最长上升子序列