此处的所有值均为实数,最多包含两个浮点数。
假设我们有一个矩形区域100.0
75.0
。
然后给你一组矩形。如何检查这些矩形是否覆盖了整个区域?
如果我们有
(0,0,50,75)
显然,这不会发生,因为它只覆盖了一半的面积。如果我们有
(0,0,50,75)
(50,0,50,75)
然后这确实有效,因为两个矩形都会有效地覆盖整个(100,75)
。
我尝试了什么
我尝试(没有用)制作一个多维的布尔数组:
bool area[10000][7500];
这些是区域的维度,乘以100,这样我就不必处理浮点数了。然后我只迭代我的每个矩形(它们的值也乘以100),对于它们中的每个“像素”,我将布尔值转换为true
。
最后,我检查该地区的所有布尔值是否为true
。
这被证明是非常愚蠢的。你能帮我找到更好的方法吗?
答案 0 :(得分:4)
我认为像这样的策略会奏效:
答案 1 :(得分:2)
我认为你的“位图”尝试失败是因为(通常的)浮点舍入问题。不幸的是,你无能为力。
现在算法正确,我会使用减法技术来处理它。
至于复杂性,我不确定它与@ 500-Internal-Server-Error或@ Tommy的解决方案相比如何,但是嘿,至少我设法想出了一些东西,我认为我不能当我第一次阅读你的问题时 - 我通常不太擅长空间的东西。 :)
答案 2 :(得分:1)
概念上非常类似于500的方法 - 内部服务器错误避免了最后一步暗示的O(n ^ 2)搜索:
如果找到合适的间隙,则不包括原件。如果你不这样做。顺便说一下,这实质上就是span缓冲的工作方式。