【NOJ1540】【动态规划_DP】最长递增子序列的长度

1540.最长递增子序列的长度

时限:1000ms 内存限制:10000K  总时限:3000ms

描述

给定一个序列,求它的最长递增子序列的长度

输入

先输入一个正整数n,表示序列的长度,再输入n个整数表示这个序列

输出

输出它的最长递增子序列的长度


#include <iostream>

using namespace std;

int n;
int a[10001];

int maxn;

int memo[10001];

int dp(int m);

int main()
{
    cin>>n;
    for(int i=0; i<n; i++)
    {
        cin>>a[i];
    }
    cout<<dp(0)<<endl;
    return 0;
}

int dp(int m)
{
    maxn=1;
    for(int i=0; i<n; i++)
    {
        memo[i]=1;
        for(int j=0; j<i; j++)
        {
            if(a[j]<a[i])
            {
                memo[i]=max(memo[i], memo[j]+1);
            }
        }
        maxn=max(maxn, memo[i]);
    }
    return maxn;
}

【2018/11/20后记】

1、本题和【防卫导弹】一模一样,只不过把【非递增】改成了【递增】而已。

猜你喜欢

转载自blog.csdn.net/qq_41727666/article/details/84304517