以编程方式以抽象方式排列矩形UI对象,没有间隙

and*_*amm 8 algorithm layout user-interface image-processing

鉴于50个具有不同宽度和高度的图像的集合,如何以有趣的*抽象方式以编程方式排列它们?(见下图)

在此输入图像描述

  • 有趣的是,我的意思是,没有大的间隙,也没有容易区分的行或列(负空间形成很多类似T的交叉点).

对于我的特定情况,所有图像的最大尺寸设置为150px,这可能意味着高度或宽度最大为150px(可能是150px乘450px,或378px乘150px).

这似乎可能是一个经典的编程挑战,但我发现这个主题难以谷歌......

编辑:更改图像以显示对整体排列必须如何没有限制(不必适合设定区域)

ami*_*mit 0

你的问题是NP-Hard

该线程表明,即使使用一种类型的 nXm 矩形,找到是否有解决方案也是 NP-Hard ,因此您更普遍的问题当然也是 NP-Hard [唯一一种类型的矩形是 的私有情况这个问题]

如果您正在寻求优化解决方案,您可以尝试回溯解决方案,或者尝试遗传算法爬山等启发式方法,这会更快 - 但通常会找到非最佳结果。