我希望有人可以帮助我优化我在当前项目中处理的算法。这是用C#编码的,但更多的是逻辑问题。
我有一个二维的bool数组(一个网格),它充当了矩形的容器。当矩形放置在网格上时,它会将bool切换为true。
空格=假
占用空间=真
现在出现问题。如何找到距离(x,y)最近的空位置,其中宽度(w)和高度(h)的矩形可以适合而不重叠占用的空间?
我做了一个非常天真的基线实现,其工作原理如下:
WHILE point not found
SET g to nearest unchecked grid point
SET allempty to true
FOR EACH x value in rect (i)
FOR EACH y value in rect (j)
IF gridpoint[i, j] is occupied
SET allempty to false;
END IF
END FOR
END FOR
IF allempty
RETURN g as legal location
END IF
END WHILE
但我知道还有其他更有效的方法来执行此操作。任何人都能指出一种可以更有效地做到这一点的算法吗?
感谢您的时间