我们得到了一个N x M的矩形区域,其中有K条线。每一行都有(x0,y0) - (x1,y1),开始和结束坐标。有没有一些众所周知的算法或资源可以帮助我写一个程序来找出这些线在矩形区域中形成了多少个独立的区域?
如果这是原始的矩形区域:http://prntscr.com/6p9m2c,则有4个独立的区域:http://prntscr.com/6p9mo5
发布于 2015-04-04 12:30:51
所有具有交叉点的线束段都形成planar graph。你必须彻底计算这个图的顶点和边数,然后应用Euler's formula
F = E - V + 2哪里
V是顶点计数-交点(以及角点和自由线段端点)的数量
E是边计数-在交叉点之后形成的段的数量
F是面的数量。
您需要的地域数量为
R = F - 1因为F考虑了外部方面。
例如,有16个顶点,10个水平边和9个垂直边,所以
R = 10 + 9 - 16 + 2 - 1 = 4请注意,您可以计算阶数为1,2的顶点(角和自由端),也可以将它们与一个相邻线段一起忽略(简化图)-这不会影响结果。
发布于 2015-04-09 01:59:05
想象一下,NxM网格是一个图形,其中每个“.”是一个顶点,如果两个顶点并排(上方、下方、侧面),则它们由一条边连接。现在,每个单独的区域对应于图中的一个连接组件,您可以使用BFS或DFS算法计算O(N*M)中连接组件的数量。
https://stackoverflow.com/questions/29440516
复制相似问题