最长上升子序列
#include<bits/stdc++.h>
using namespace std;
class Solution{
public:
int maxArray(vector<int>& nums){
vector<int> dp(nums.size(),1);//dp数组初始化都为1
int result=0;//利用result来更新最长上升子序列的值
for(int i=1;i<nums.size();i++){
for(int j=0;j<i;j++){
//j下标来比较当前值和之前值的大小
if(nums[i]>nums[j]){
//满足条件则写出递推公式
dp[i]=max(dp[i],dp[j]+1);
//当前数据大还是前面j下面存储的序列加1大
}
}
if(dp[i]>result) result=dp[i];
//更新result;
}
return result;
}
};
int main(){
vector<int>nums;
int n;
Solution solution;
cin>>n;
for(int i=0;i<n;i++){
int num;
cin>>num;
nums.push_back(num);
}
cout<<solution.maxArray(nums);
}
欢迎批评指正!