将彩色框分组为正方形的算法
Algorithm for grouping colored boxes into squares
假设一个二维 (width
* height
) 数组,其中每个元素都是一个彩色框。
盒子的数量是 n
。所有框的颜色数限制为常数 c
,并且 c <<< n
.
现在对于给定的k
,找到一种方法将这些框分组为更大的正方形,以便所有组(正方形)的计数最接近k
,其中组项可以是 1, 4, 9, 16, 25, 36, ... 里面的盒子(这样它们就可以形成一个正方形)。
在每个组(正方形)中,所有元素的颜色必须相同。
单元素正方形是有效的。
方块不能重叠。
list all 2 by 2 squares of same colored boxes
while count of squares != k
if count < k
if possible to split largest square into smaller squares
split
else
stop
else
if possible to combine 4 small squares into one
combine
else
stop
假设一个二维 (width
* height
) 数组,其中每个元素都是一个彩色框。
盒子的数量是 n
。所有框的颜色数限制为常数 c
,并且 c <<< n
.
现在对于给定的k
,找到一种方法将这些框分组为更大的正方形,以便所有组(正方形)的计数最接近k
,其中组项可以是 1, 4, 9, 16, 25, 36, ... 里面的盒子(这样它们就可以形成一个正方形)。
在每个组(正方形)中,所有元素的颜色必须相同。 单元素正方形是有效的。 方块不能重叠。
list all 2 by 2 squares of same colored boxes
while count of squares != k
if count < k
if possible to split largest square into smaller squares
split
else
stop
else
if possible to combine 4 small squares into one
combine
else
stop