1. 转化为最长上升子序列即可求解(一,可以从任何地方上,二,只需要从小到大得上,且没要求要上到最大值,只要求步数最多)
#include<bits/stdc++.h>

using namespace std;

int main(){

    int in,a;

    while(cin>>in){

        vector<int> dp(in+1,1);//各自为阵

        int num[in];
        for(int i = 0; i< in;i++){
            cin>>a;
            num[i] =a; 
        }

        int max_ = 0;
        for(int i =1; i<= in; i++){
            for(int j = 1; j< i; j++){

                if(num[i-1]>num[j-1]){
                    dp[i] = max(dp[i],dp[j]+1);
                }

                if(dp[i]>max_){
                    max_ = dp[i];
                }
            }
        }

        cout<<max_<<endl;


    }

    return 0;
}