#include <iostream> #include <algorithm> #include <vector> using namespace std; int lengthOfLIS(vector<int>& nums) { int n = nums.size(); vector<int> dp(n, 1); // 初始化dp数组,每个位置初始长度为1 for (int i = 0; i < n; ++i) { for (int j = 0; j < i; ++j) { if (nums[i] > nums[j]) { dp[i] = max(dp[i], dp[j] + 1); // 状态转移 } } } int maxLength = 0; for (int num : dp) { maxLength = max(maxLength, num); // 找到dp数组中的最大值 } return maxLength; } int main() { int N; cin >> N; vector<int> nums(N); for (int i = 0; i < N; ++i) { cin >> nums[i]; } cout << lengthOfLIS(nums) << endl; return 0; } /************************************************************** Problem: 1893 User: zhuangsongyu Language: C++ Result: Time Limit Exceed ****************************************************************/