/*
给定一个无序的整数数组,找到其中最长上升子序列的长度。
示例:
输入: [10,9,2,5,3,7,101,18]
输出: 4
解释: 最长的上升子序列是 [2,3,7,101],它的长度是 4。
*/
//动态规划的题一般都要开数组,数组中保存了要求的东西(想清楚数组表示什么)
int max(int a,int b){
return a>b?a:b;
}
int lengthOfLIS(vector<int>& nums) {
int*dp=new int[nums.size()+1];
for(int k=0;k<nums.size();k++)
dp[k]=1;
for(int i=0;i<nums.size();i++){
for(int j=i;j<nums.size();j++){
if(nums[j]>nums[i])
dp[j]=max(dp[i]+1,dp[j]); //dp数组保存了最大上升子序列的值
}
}
int m=0;
for(int i=0;i<nums.size();i++){ //找个最大的输出就行了
if(m<dp[i])
m=dp[i];
}
return m;
}