class Solution {
vector<int>dp;
public:
int maxEnvelopes(vector<vector<int>>& envelopes) {
sort(envelopes.begin(),envelopes.end());
dp.resize(envelopes.size(),1);
for(int i=0;i<envelopes.size();i++)
{
for(int j=0;j<i;j++)
{ if(envelopes[j][0]<envelopes[i][0]&&envelopes[j][1]<envelopes[i][1])
dp[i]=max(dp[i],dp[j]+1);}
}
return *max_element(dp.begin(), dp.end());
}
};
最长递增子序列:
dp=1*[n]
for i:n
for j=i :n
dp[i]=max(dp[i],dp[j]+1)
end
end
return max(dp)