题目描述:https://www.nowcoder.com/practice/24e6243b9f0446b081b1d6d32f2aa3aa?tpId=37&tqId=21326&rp=1&ru=/activity/oj&qru=/ta/huawei/question-ranking
#include<iostream>
#include<stdio.h>
#include<vector>
using namespace std; //动态规划
int main(){
int N;
while(cin>>N){
vector<int> Data(N,0);
vector<int> Dp(N,1);
int ret = 0;
for(int i=0; i<N; ++i){
cin >> Data[i];
for(int j=0; j<i; j++){
if(Data[i]>Data[j])
Dp[i] = max(Dp[i],Dp[j]+1);//Dp[i]表示从第i个点走的最多步数
}
ret = max(ret,Dp[i]);
}
cout<< ret<<endl;
}
return 0;
}