题目链接
可以先做一下LeetCode:300. 最长递增子序列,这道题就迎刃而解了。
参考题解
#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;
//其实就是最长上升子序列问题
int lengthOfLIS(vector<int>& nums) {
int len = nums.size();
if(len==0)return 0;
vector<int> dp(len,0);
for(int i = 0;i<len;++i) {
dp[i] = 1;
for(int j = 0;j<i;++j) {
if(nums[j]<nums[i]) {
dp[i] = max(dp[i],dp[j]+1);
}
}
}
return *max_element(dp.begin(), dp.end());
}
int main(){
int n,high;
cin>>n;
vector<int> vi;
while(n--) {
cin>>high;
vi.push_back(high);
}
cout<<lengthOfLIS(vi);
return 0;
}