状态D[i]的值表示以第i个元素结尾的上升子序列的最大长度
#include<iostream>
#include <memory.h>
#include <algorithm>
#define MAX 1005
using namespace std;
struct node
{
int num;
int MaxNum;
int id;
};
node D[MAX];
int N;
int main()
{
cin >> N;
for(int i=1; i<=N; i++)
cin >> D[i].num;
for(int i=1; i<=N; i++)
{
D[i].id = i;
D[i].MaxNum = 1;
}
for(int i=2; i<=N; i++)
{
int temp=0,M=0;
for(int j=1; j<i; j++)
{
if(D[j].MaxNum>M && D[j].num<D[i].num)
{
M = D[j].MaxNum;
temp = j;
}
}
if(temp && M)
{
D[i].MaxNum = D[temp].MaxNum+1 ;
}
}
int M=-1;
for(int i=1;i<=N;i++)
M = max(D[i].MaxNum,M);
cout<<M<<endl;
return 0;
}