#include <iostream> #include <vector> #include <algorithm> using namespace std; int main() { int n; cin >> n; vector<int> a(n); for (int i = 0; i < n; ++i) { cin >> a[i]; } // dp[i] ±íʾÒÔ a[i] ½áβµÄ×²»Ï½µ×ÓÐòÁеij¤¶È vector<int> dp(n, 1); // prev[i] ÓÃÓڼǼǰÇý½Úµã£¬ÒԱ㹹Ôì×²»Ï½µ×ÓÐòÁÐ vector<int> prev(n, -1); // ¶¯Ì¬¹æ»®Çó½â for (int i = 1; i < n; ++i) { for (int j = 0; j < i; ++j) { if (a[j] < a[i] && dp[j] + 1 > dp[i]) { dp[i] = dp[j] + 1; prev[i] = j; } } } // ÕÒµ½×²»Ï½µ×ÓÐòÁеij¤¶È int maxLen = 0; int endIndex = -1; for (int i = 0; i < n; ++i) { if (dp[i] > maxLen) { maxLen = dp[i]; endIndex = i; } } cout << maxLen << endl; return 0; } /************************************************************** Problem: 1794 User: chenpengxi Language: C++ Result: Accepted Time:316 ms Memory:2220 kb ****************************************************************/