Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/algorithm/10.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 - Fatal编程技术网

Algorithm 算法,块堆叠-图论

Algorithm 算法,块堆叠-图论,algorithm,Algorithm,我正在为我的算法课努力解决这个问题。它在图论部分。我想我应该使用最大加权匹配。但不知道如何构造二部图。有什么建议吗 我们得到n个大小为a1×b1的矩形,安×bn。我们想 用长方形建造最高的塔。在塔中,如果宽度为w的矩形位于宽度为w的矩形的顶部 w' 那么我们需要w≤ w' . 我们可以旋转矩形(即,a×b矩形可以变成a) b×一个矩形)。给出一个O(n)算法,该算法可以找到可能的最高塔的高度。 (例如,如果输入为11×11、8×2、1×10,那么解决方案是高度为29=11+8+10的塔。)如果我

我正在为我的算法课努力解决这个问题。它在图论部分。我想我应该使用最大加权匹配。但不知道如何构造二部图。有什么建议吗

我们得到n个大小为a1×b1的矩形,安×bn。我们想 用长方形建造最高的塔。在塔中,如果宽度为w的矩形位于宽度为w的矩形的顶部 w' 那么我们需要w≤ w' . 我们可以旋转矩形(即,a×b矩形可以变成a) b×一个矩形)。给出一个O(n)算法,该算法可以找到可能的最高塔的高度。
(例如,如果输入为11×11、8×2、1×10,那么解决方案是高度为29=11+8+10的塔。)

如果我正确理解了问题,您可以通过求和
Math.max(ai,bi)
始终找到可能最高的塔的高度。因为你不需要建造这座塔,它只需要
O(n)
。否则,您需要
O(nlogn)
(按矩形高度排序)。

如果您有两个块(一个叠在另一个上)的约束条件,即顶部块的宽度为