You are given a set of n types of rectangular 3-D boxes, where the i^th box has height h(i), width w(i) and depth d(i) (all real numbers). You want to create a stack of boxes which is as tall as possible, but you can only stack a box on top of another box if the dimensions of the 2-D base of the lower box are each strictly larger than those of the 2-D base of the higher box. Of course, you can rotate a box so that any side functions as its base. It is also allowable to use multiple instances of the same type of box.
Source:http://people.csail.mit.edu/bdean/6.046/dp/. The link also has video for explanation of solution.
TheBox Stacking problem is a variation of LIS problem. We need to build a maximum height stack.
Following are the key points to note in the problem statement:
1) A box can be placed on top of another box only if both width and depth of the upper placed box are smaller than width and depth of the lower box respectively.
2) We can rotate boxes. For example, if there is a box with dimensions {1x2x3} where 1 is height, 2×3 is base, then there can be three possibilities, {1x2x3}, {2x1x3} and {3x1x2}.
3) We can use multiple instances of boxes. What it means is, we can have two different rotations of a box as part of our maximum height stack.
Following is thesolutionbased onDP solution of LIS problem.
1)Generate all 3 rotations of all boxes. The size of rotation array becomes 3 times the size of original array. For simplicity, we consider depth as always smaller than or equal to width.
2)Sort the above generated 3n boxes in decreasing order of base area.
3)After sorting the boxes, the problem is same as LIS with following optimal substructure property.
MSH(i) = Maximum possible Stack Height with box i at top of stack
MSH(i) = { Max ( MSH(j) ) + height(i) } where j < i and width(j) > width(i) and depth(j) > depth(i).
If there is no such j then MSH(i) = height(i)
4)To get overall maximum height, we return max(MSH(i)) where 0 < i < n
相关推荐
【标题】"2022最新版:GEEKS V1.0.10主题:在线学习市场WordPress主题.rar" 涉及的核心知识点主要集中在WordPress主题开发与在线教育平台的构建上。WordPress是一个非常流行的开源内容管理系统(CMS),被广泛用于...
- "interview-practice":暗示这个项目可以帮助开发者准备技术面试,因为面试通常会考察候选人的算法理解和实现能力。 【压缩包子文件的文件名称列表】:geeks_algorithms-master 这个列表表明压缩包包含了一个名...
"Geeks2TheRescue:使用MERN的Web App,旨在连接雄心勃勃的开发人员" 这个标题揭示了项目的核心——一个基于MERN技术栈的Web应用程序,其目的是为了建立一个社区,将充满激情和抱负的开发者联系起来。MERN是一个流行...
《C++解题指南:Geeks-for-Geeks问题解决方案详解》 在编程的世界里,Geeks-for-Geeks(GFG)是一个备受推崇的学习平台,尤其对于初学者和有经验的开发者来说,这里提供了丰富的算法和数据结构题目。本资料包"geeks...
带有React JS的WebApp样板 要求: 确保您使用的是节点版本10 安装软件包: $ npm install 创建一个.env文件: $ cp .env.example .env 开始编码! 以及具有实时重新加载功能的webpack开发服务器(适用于Windows...
夏季极客提交 这个Web应用程序被配制成在Innnovaccer SDE实习分配的一部分,使用的NodeJS,MongoDB的,NodeMailer的电子邮件和Nexmo的手机信息,根据。 预习 报到表格 结帐电子邮件 使用的技术 ...
欢迎来到4Geeks学院 <\编码时间>内容关于。创始人。团队。奖项。校友关于4Geeks是一家大公司,感觉就像一家小公司;每个人都可以访问,我们喜欢与人接触,我们相信量身定制的教育,而不会离开您的工作,并且100%...
《Geeks3D Furmark:全面解析OpenGL显卡基准测试工具》 Geeks3D Furmark,这是一款专为评测显卡性能而设计的OpenGL基准测试工具,它由知名技术团队Geeks3D开发,旨在为用户提供准确且全面的显卡性能评估。V1.17.1的...
面试时,面试官可能会从多个方面考察候选人的 Java 技能,包括基础语法、类、对象、变量、字符串处理、多线程、面向对象概念、异常处理、集合框架等。 1. **Java 基础**: - Java 是一种静态类型的、解释型的、跨...
:sparkles: gloomhaven-geeks :sparkles: 这是一个使用Git作为的网站。 它是在不到一分钟的时间内使用创建的。 您可以像这样,或探索一些变体。 如何不同: :artist_palette: 看 :pencil: 内容管理系统 :gear: 静态...
极客换极客 Geeks-For-Geeks 实习文章 使用 scapy 嗅探数据包 - 使用 Javascript 和 DOM 创建棋盘模式 - 如何将链接从一个 iframe 加载到另一个 iframe -
标题中的“geeks文档.doc”和描述中的“geek极客们都用什么神器,这篇文章给了你答案。”都指向了一个主题:探讨极客们使用的高效工具,即“神器”。标签中的“geek 极客 神器”进一步确认了这个话题,我们将重点...
首先,从标题和描述中,我们可以了解到这是关于一个在线IT资源平台geeksforgeeks上关于C++编程语言的学习内容和经验分享。从“标题”中我们得知这是一个专门讨论C++的资源集合,而“描述”部分则是一个学习者的个人...
### Ubuntu Linux for Non-Geeks:重要知识点概览 #### 一、书籍基本信息与版权说明 - **书名**:《Ubuntu Linux for Non-Geeks》 - **作者**:Rickford Grant - **出版社**:No Starch Press - **出版地**:美国...
本题的难度并不在最短路径本身这个算法,而是在于堆的操作: 1 使用双重指针操作堆的节点,可以省去直接复制操作堆节点,提高效率,并且这才是有效操作动态地址数据的方法,不用双重指针,我思考了下,觉得更加不好...
Hardware Hacking Projects for Geeks 英文chm 本资源转载自网络,如有侵权,请联系上传者或csdn删除 本资源转载自网络,如有侵权,请联系上传者或csdn删除
### Ubuntu for Non-Geeks (Fourth Edition):一本无痛高效指南 #### 书籍概览 《Ubuntu for Non-Geeks》(第四版)是一本针对Ubuntu新手的实用指南,旨在帮助那些对技术不太熟悉的用户轻松掌握Ubuntu操作系统。...
标题中的“Hash Map for geeks_hashmap_Geeks_源码”显然指的是一个关于哈希映射(HashMap)的学习资源,特别针对极客和普通程序员。哈希映射是一种数据结构,它允许我们以O(1)的时间复杂度进行插入、删除和查找操作...
《Geeks3D PhysX FluidMark v1.3.1:显卡性能的深度剖析》 在计算机硬件领域,显卡扮演着至关重要的角色,它不仅负责图形渲染,还承担了复杂的物理运算任务。为了评估显卡的性能,专业工具的运用必不可少。其中,...
Mac OS X For Unix Geeks 2003