#include <iostream> using namespace std; int max(int a, int b) { if(a>b) { return a; } return b; } int main() { int num; while(cin>>num) { int input[num]; int result[num]; int res = 0; for(int i=0; i<num; i++) { result[i] = 1; cin>>input[i]; } //这叫动态规划吗 for(int i=num-2; i>=0; i--) { for(int j=i+1; j<num; j++) { if(input[i]<input[j]) { result[i] = max(result[i],result[j]+1); } } } //找出最大值 for(int i=0; i<num; i++) { if(res<result[i]) { res = result[i]; } } cout<<res<<endl; } return 0; }