1. 程式人生 > >【NOJ1540】【動態規劃_DP】最長遞增子序列的長度

【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、本題和【防衛導彈】一模一樣,只不過把【非遞增】改成了【遞增】而已。