多维最长递增子序列

最长递增子序列

一般采取动态规划的思路求解,常见的有两种:
①:dp[i]表示以vec[i]结尾的最长递增子序列长度
②:dp[len]=k表示长度为len的最长递增子序列末尾最小为k

多维最长递增子序列

描述
已知三个int数组w,l,h,分别表示每个箱子宽、长和高,同时给定箱子的数目n。请设计算法,将箱子都堆起来(箱子不能反转),且上面箱子的宽度和长度必须小于下面的箱子。返回值为能够堆出的最高的高度。要求n小于等于500。

测试样例:
[1,1,1],[1,1,1],[1,1,1]
返回:1

求解思路

先按照长度从小到大排序,然后在该单维有序的序列中,寻找最长的递增子序列(这里的最长不再是长度=》而是累积高度)

dp[i]=k表示以vec[i]结尾的最长递增子序列累积高度为k,采取循环填充即可

struct m_box
{
   
    int l;
    int w;
    int h;
    m_box(int _l,int _w,int _h)
    {
   
        l=_l;
        w=_w;
        h=_h;
    }
};
//按照长度排序
static bool 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值