最长递增子序列
一般采取动态规划的思路求解,常见的有两种:
①: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