<分区>
我有一个由 0 和 # 组成的网格。 我想将所有 0 重新组合成矩形。最少需要多少个矩形?
示例:
#00#00
#00#00
0000#0
000000
#11#34
#11#34
2222#4
222254
在这个例子中,我们使用了 5 个矩形。还有其他解决方案,但 5 个矩形是覆盖所有 0 的最小值。
标签 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 - 我怎样才能加快我的 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) 运行时间