堆箱子。给你一堆n个箱子,箱子宽 wi、深 di、高 hi。 来源:力扣(LeetCode) 类似题目: 对一个维度进行降序排序 剩下的跟最长递增子序列差不多,只不过求解的不是长度,是最大和 280 ms 16.7 MB
1. 题目
箱子不能翻转,将箱子堆起来时,下面箱子的宽度、高度和深度必须大于上面的箱子。
实现一种方法,搭出最高的一堆箱子。箱堆的高度为每个箱子高度的总和。输入使用数组[wi, di, hi]表示每个箱子。 示例1: 输入:box = [[1, 1, 1], [2, 2, 2], [3, 3, 3]] 输出:6 示例2: 输入:box = [[1, 1, 1], [2, 3, 4], [2, 6, 7], [3, 4, 5]] 输出:10 提示: 箱子的数目不大于3000个。
链接:https://leetcode-cn.com/problems/pile-box-lcci
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。2. 解题
LeetCode 354. 俄罗斯套娃信封问题(最长上升子序 DP/二分查找)
程序员面试金典 – 面试题 17.08. 马戏团人塔(最长上升子序 DP/二分查找)
动态规划应用–最长递增子序列 LeetCode 300class Solution { public: int pileBox(vector<vector<int>>& box) { sort(box.begin(), box.end(),[&](auto a, auto b) { return a[0] > b[0];//宽降序 }); int i, j, n = box.size(); vector<int> dp(n,0);//以i箱子为顶的最大高度 for(i = 0; i < n; ++i) { dp[i] = box[i][2];//初始化自身高度 for(j = 0; j < i; ++j)//跟前面的比较 { if(box[i][0] < box[j][0] && box[i][1] < box[j][1] && box[i][2] < box[j][2])//满足条件 { dp[i] = max(dp[i], box[i][2]+dp[j]);//可以叠加,取最大的 } } } return *max_element(dp.begin(),dp.end()); } };
本网页所有视频内容由 imoviebox边看边下-网页视频下载, iurlBox网页地址收藏管理器 下载并得到。
ImovieBox网页视频下载器 下载地址: ImovieBox网页视频下载器-最新版本下载
本文章由: imapbox邮箱云存储,邮箱网盘,ImageBox 图片批量下载器,网页图片批量下载专家,网页图片批量下载器,获取到文章图片,imoviebox网页视频批量下载器,下载视频内容,为您提供.
阅读和此文章类似的: 全球云计算