如果我有一个任意大小的等大小正方形网格(它们之间没有间隔),我需要知道一种有效的方法将它们缩小到最小数量的矩形中,例如,如果每个星号代表一个正方形,则可以将其缩小为一个大矩形:
*****
*****
*****
虽然这可以缩小为两个矩形:
*** ***
***** => **(1) ***(2)
***** ** ***
*** ***
一种显而易见的解决方案是收集每行相邻的正方形,然后收集相同的相邻行。对于我的第二个例子,这将找到三个矩形,但这并不是最优解。
*** (1)
***** (2)
*****
*** (3)
我想知道是否有更成功和高效的算法来完成这个任务。