Java 垃圾箱包装是否有扭曲?

Java 垃圾箱包装是否有扭曲?,java,algorithm,Java,Algorithm,我一直在努力寻找某种算法来解决我遇到的问题。我遇到的最接近的事情是装箱算法,但我不认为它是我所寻找的安静 本文档是我的问题和预期输出的图形表示: 我的想法是在哪里找到最低(高度)的矩形,并创建一个适合剩余矩形宽度的矩形,然后通过一些递归计算出剩余的矩形 我基本上想做的是找到最小数量的垂直堆叠矩形,给定N个水平放置的矩形 在Java中,我有一个带有输入矩形的HashMap 有什么想法,代码,链接吗?谢谢找到最小的矩形 从中创建第一个生成的矩形 确定剩余的矩形 将该算法应用于剩余矩形的所有连续组。

我一直在努力寻找某种算法来解决我遇到的问题。我遇到的最接近的事情是装箱算法,但我不认为它是我所寻找的安静

本文档是我的问题和预期输出的图形表示:

我的想法是在哪里找到最低(高度)的矩形,并创建一个适合剩余矩形宽度的矩形,然后通过一些递归计算出剩余的矩形

我基本上想做的是找到最小数量的垂直堆叠矩形,给定N个水平放置的矩形

在Java中,我有一个带有输入矩形的HashMap


有什么想法,代码,链接吗?谢谢找到最小的矩形

从中创建第一个生成的矩形

确定剩余的矩形

将该算法应用于剩余矩形的所有连续组。

我认为您应该使用分治


当您找到最低的矩形时,您也会分割数据集。下一个矩形在左侧或右侧集中独占。这是递归的

啊,是的,这和我的想法是一样的。问题在于它的算法部分,就像在代码中一样,它将遍历HashMap并最终将矩形放置在正确的位置。一个更明显的表示是从左到右排列的矩形数组。有了这种表示,实现上述算法就容易多了。最坏的情况是
O(n*n)
,其平均值是
O(n log(n))
。如果这个算法不够快,我有一个更复杂的算法,就是O(nlog(n))`最坏情况。但这种复杂性可能是不必要的。