NC153 信封嵌套问题

给n个信封的长度和宽度。如果信封A的长和宽都小于信封B,那么信封A可以放到信封B里,请求出信封最多可以嵌套多少层。

class Solution {
public:
    static bool cmp (const vector<int> a,const vector<int> b)
    {
        if(a[0]!=b[0])
            return a[0]<b[0];
        else
            return a[1]<b[1];
    }
    int process(vector<vector<int> >& letters, int len,int wide,int times,int index)
    {
        if(index==letters.size())
            return times;
        
        if(len>=letters[index][0] || wide>=letters[index][1])
            return process(letters,len,wide,times,index+1);
        // 要当前的信封
        int letterin=process(letters,max(len,letters[index][0]),max(wide,letters[index][1]),times+1,index+1);
        // 不要当前的信封
        int letterout=process(letters,len,wide,times,index+1);
        return max(letterin,letterout);
    }
    int maxLetters(vector<vector<int> >& letters) {
        // 首先对 lectters 排序
        sort(letters.begin(),letters.end(),cmp);
        int count = process(letters,0,0,0,0);
        return count;
    }
};
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值