首页 > 解决方案 > 将网格分解为行和列

问题描述

目前我正在研究一种在网格上布置图和小部件的算法。我正在使用的底层库有两个用于构建网格、行和列的原语。这个想法是我给它提供了一个网格规范,它定义了每个绘图占用的网格单元数。单独的绘图和小部件可以占据一个或多个网格单元,但必须是矩形的。为了使这个问题更具体一点,我将绘制一个简单的 4x4 网格,其中每个数字代表一个单独的图或小部件:

---------------------
|  1 |  2 |  3 |  3 |
|____|____|____|____|
|  4 |  2 |  5 |  5 |
|____|____|____|____|
|  4 |  6 |  7 |  7 |
|____|____|____|____|
|  4 |  6 |  7 |  7 |
|____|____|____|____|

通过分解网格的每个部分,我们可以将其分解为许多嵌套的行和列,例如,在本例中,它可能看起来像这样:

col1 = column(1, 4)
col2 = column(3, 5)
row1 = row(2, col2)
row2 = row(6, 7)
col3 = column(row1, row2)
grid = row(col1, col3)

# or as a single expression
row(column(1, 4), column(row(2, column(3, 5)), row(6, 7)))

有没有一种算法可以让我们将这个网格分解成这样的行和列?我一直在玩它,但我尝试过的任何事情都会很快变得非常复杂,我怀疑我根本没有找到一种很好的方式来表示和思考这个问题。

标签: algorithm

解决方案


推荐阅读