我得到了一个二维点数组,任务是生成一个最小的矩形列表,其中所有矩形具有相同的大小和方向,它们覆盖所有的二维点位置并且可以重叠。
到目前为止,我有一个不太令人满意的解决方案,其中选择数组中的第一个点作为第一个矩形的中心,然后移动该矩形,以使最接近的点适合其中。重复该过程,直到已经覆盖如果要再次移动矩形,则将丢失点。之后,从下一个未发现的点开始重复该过程,直到没有剩余的点为止。不太令人满意。
目标是找出最佳算法。它不必是矩形的绝对最小数目,而应尽可能少。
首先,可以以如下方式平移/投影坐标,即矩形大小为1x1,方向为0°(与X / Y轴对齐)。所以我会假设这种情况。
然后您可以按照以下步骤进行: