algorithm - 将网格划分为矩形

标签 algorithm

<分区>

我有一个由 0 和 # 组成的网格。 我想将所有 0 重新组合成矩形。最少需要多少个矩形?

示例:

#00#00
#00#00
0000#0
000000

#11#34
#11#34
2222#4
222254

在这个例子中,我们使用了 5 个矩形。还有其他解决方案,但 5 个矩形是覆盖所有 0 的最小值。

最佳答案

问题是NP-Hard并被称为经典的二维变体 bin-packing problem ,称为 2D-binpacking
因此,这个问题没有已知的多项式解

这已被广泛研究,这里有一个例子 article处理近似解决此问题的方法。

您也可以尝试使用 Genthic 算法或其他启发式方法来解决问题。

关于algorithm - 将网格划分为矩形,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13827392/

相关文章:

algorithm - 如何在 Tictactoe 中实现 minimax

algorithm - "Drawing"离散 x-y 步长的弧

algorithm - 将 2 的幂转换为不带对数的线性序列

algorithm - 如何使用渐近符号求解方程?

algorithm - 求解 ODE 算法的有限差分法

javascript - 间隔范围插入间隔而不合并现有间隔

java - 二维数组值频率

algorithm - 我怎样才能加快我的 Aho-Corasick 算法?

algorithm - 在渐近分析中,证明 :- O( f(n) + g(n) ) = O( max{ f(n) , g(n) } )

algorithm - 使用方法 add、get_max、get_min、get_mean、get_mode 设计 IntegerTracker 类。所有 O(1) 运行时间