如何确定一组给定的形状是否适合固定大小的网格

问题描述

我有一个给定大小的网格。出于演示目的,假设它是一个 4x2 网格(4 列和 2 行 [见下图])

4x2 grid

此外,我有一组应显示在网格内的矩形。这些矩形可以有不同的大小。矩形的大小由它在网格上跨越的列数和行数指定。例如,一个矩形的大小可能为 {width: 2,height: 1},这意味着它在水平方向上占据两个网格元素,在垂直方向上占据一个网格元素(见下图)。矩形的最小尺寸为 {width:1,height:1}

Example of one rectangle

正如我所说,给出了一组这些矩形。这样的集合存储在数组中。例如

[
    {width: 1,height:2},{width: 2,{width: 1,height:1}
]

此示例将生成以下网格

enter image description here

正如您想象的那样,这些矩形的集合是无效的,因为它们无法放入网格中。 例如配置

[
   {width: 3,height:1},{width: 3,height:1}
]

永远无法适应 4x2 网格。

我想回答的问题是: 决定一组给定的矩形是否适合 4x2 网格的规则是什么?

当然,每组试图占据超过 8 个网格元素的矩形都是无效的。例如

[
   {width: 3,height:1}
]

显然是无效的,因为它试图占据 11 个网格元素 (3*2 + 2*2 + 1*1)。但是仅凭这条规则并不能捕获所有无效情况。我现在有点困惑还有哪些其他规则可以决定一组矩形是否有效/无效。

这种问题似乎属于装箱问题,但我不确定。特别是因为我见过的大部分 Packing Problems 都不要处理固定大小的网格。

对相关问题或替代解决方案的任何提示将不胜感激。

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)