- 转化为最长上升子序列即可求解(一,可以从任何地方上,二,只需要从小到大得上,且没要求要上到最大值,只要求步数最多)
#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; }