运行时间较长,有时间再改进吧
class Solution {
public:
void sort(vector<pair<int,int>>& s)
{
const int N=s.size();
//insert sort从小到大排序
for(int i=1;i<N;i++)
{
int first=s[i].first;
int second=s[i].second;
int k=i;
for(int j=i-1;j>=0;j--)
{
if(first<s[j].first||(first==s[j].first&&second<s[j].second))
{
s[j+1].first=s[j].first;
s[j+1].second=s[j].second;
k=j;
}
}
s[k].first=first;
s[k].second=second;
}
}
int maxEnvelopes(vector<pair<int, int>>& en) {
const int N=en.size();
if(N<=1)return N;
sort(en);
int max=1;
int res[N];
for(int i=0;i<N;i++)
{
res[i]=1;
for(int j=0;j<i;j++)
{
if(en[j].first<en[i].first&&en[j].second<en[i].second)
res[i]=(res[i]>(1+res[j]))?res[i]:(1+res[j]);
}
if(max<res[i]) max=res[i];
}
return max;
}
};