给定一组 n 种类型的矩形 3-D 框,其中第 i^th 框的高度为 h(i),宽度为 w(i),深度为 d(i)(均为实数)。您想创建一个尽可能高的盒子堆叠,但如果下层盒子的 2-D 底座的尺寸都严格大于 2-D 盒子的尺寸,您只能将一个盒子堆叠在另一个盒子的顶部。上盒的 D 底座。当然,你可以旋转一个盒子,让任何一面作为它的基础。不允许在一个盒子上使用多个实例。
这个问题已在 SO(Box stacking problem)上提出,但没有“没有重复”的限制。我们如何使用 LIS 解决这个问题。
我设计了以下解决方案,可以辩论吗
H[j] = max(H[j],max(H[i]|i<j, D[j] < D[i] , W[j]<W[i]+ H[j] -H[j'] )
其中 h[j'] 只不过是如果第 j 个框已经用于计算 H[i] 。由于允许旋转,H[j] 可以是第 j 个框的宽度或深度