我有一个 3D 数组。在这个数组中,我想找到可以组合成更大元素的元素。矩形不能相互重叠。最好我想先找到最大的矩形,但先到先得也不会错,特别是如果这样可以提高性能。
例如
1 0 0 0 1
0 0 0 0 0
0 0 0 0 1
1 1 0 0 1
将产生(因为 3x3 是可以找到的最大矩形;位置 1, 0 到 3, 2 - zerobased):
0 0 0
0 0 0
0 0 0
和(因为 1x2 是可以找到的下一个最大矩形;位置 0, 1 到 0, 2):
0
0
和(因为 2x1 是可以找到的下一个最大矩形;位置 2, 3 到 3, 3):
0 0
当然(左边是位置 4, 1;不是更大但仍需要使用)
0
作为更大的元素(我只需要知道零或一)。目的是减少体素网格的对撞机数量。
我不知道这种算法的名称,也许我可以找到自己如何做到这一点。
如果有人可以为此提供一些可行的信息,那就太好了!