![]() |
1
6
正如@BeemerGuy指出的,
有一个O(N^2)的解决方案,对于每个矩形,你搜索其他矩形的列表,看看它是否适合内部。每个矩形的“所有者”是包含它的最小矩形。伪码:
它的效率不高,但对于你的目的来说可能“足够快”。我很确定我已经看到了一个O(n logn)解决方案(毕竟这只是一个排序操作),但它有点复杂。 |
![]() |
2
9
使用
更新
:
|
![]() |
3
4
平均情况O(n logn)解决方案: 将矩形集想象成一棵树,父节点“包含”子节点——这与DOM结构类似。你一次要把这棵树做成一个长方形。 创建一个虚拟节点作为树的根。然后,对于每个矩形(“current_rect”),从根的子对象开始向下,直到找到它的位置:
“contains”关系询问一个矩形是否包含另一个矩形“父”、“子”和“兄弟”指的是树结构。 编辑 :修复了一个错误,该错误将无法将某些节点移动到当前目录中。 |
![]() |
4
0
检查矩形中的每个点是否在其他矩形的边界内。 在.NET中,矩形类有一个.Contains(Point)方法。或者可以再次检查目标矩形的.Left、.Right、.Top和.Bottom属性的角点坐标。 |
![]() |
5
0
伪代码:
|
![]() |
A B · C#Excel自动调整列避免长文本时出错 3 月前 |
![]() |
pseudodev · 失败的测试仅显示堆栈跟踪,不显示完整日志 4 月前 |
![]() |
CactusCake · if语句中应有分号 5 月前 |
![]() |
Bin4ry · 子文件夹中的应用程序设置 5 月前 |