Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/powershell/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Algorithm 箱子堆放问题_Algorithm_Dynamic Programming - Fatal编程技术网

Algorithm 箱子堆放问题

Algorithm 箱子堆放问题,algorithm,dynamic-programming,Algorithm,Dynamic Programming,给定的是三维的n框(h,w,d)。目标是将它们堆叠在一起,以获得最大高度(可以旋转盒子)。您放在顶部的每个框的尺寸应该比下面的框小(w,d) 我们如何用动态规划和贪婪来实现它呢?这就是问题4 如果你想自己考虑一下,想想如何适应这个问题。这个问题似乎比一般的C++算法更重要,它是相当复杂的优化任务。你最好去math.stackexchange.com问问,不知道“更小的维度(w,d)”是什么意思。你的意思是说顶面比底面小吗?或者你的意思是,两边的排列可以使底部完全覆盖顶部(有数学术语吗?)。例如2

给定的是三维的
n
框(
h
w
d
)。目标是将它们堆叠在一起,以获得最大高度(可以旋转盒子)。您放在顶部的每个框的尺寸应该比下面的框小(
w
d

我们如何用动态规划和贪婪来实现它呢?

这就是问题4


<>如果你想自己考虑一下,想想如何适应这个问题。

这个问题似乎比一般的C++算法更重要,它是相当复杂的优化任务。你最好去math.stackexchange.com问问,不知道“更小的维度(w,d)”是什么意思。你的意思是说顶面比底面小吗?或者你的意思是,两边的排列可以使底部完全覆盖顶部(有数学术语吗?)。例如2x2比3x1有更多的表面,但前者不能覆盖后者(AFAIC)。这是@madmik3的复制品:根本不是背包问题。这看起来更像是块堆叠问题,但我不确定这是一个好的视频。但由于该算法要求克隆所有框的方式,如果输入仅为一个1x2x3框,则该算法会使用两个框找到一个高度为4的塔。我想知道这是否是mozhdeh的本意。@Jason Orendorff-即使这不是OP想要的,我认为可以通过考虑放置盒子时的旋转来防止这种情况发生,而不是克隆盒子。或者通过克隆每个框并为其分配一个ID,确保每个都只使用一次。我认为这是一个最长的递增后续问题。但我不确定。我不知道如何在图论中解决它。最贪婪的是什么?你知道,我们想要使用动态规划,所以我们不能检查提供的所有空间,通过旋转,我们每个框有六个状态,所以它不是动态的,如果我们检查所有的空间。