相关疑难解决方法(0)

如何将一组矩形分组到连接区域的"岛屿"中?

问题

我有一系列的java.awt.Rectangles.对于那些不熟悉这门课程的人来说,重要的信息是它们提供了一种.intersects(Rectangle b)功能.

我想编写一个函数来获取这个Rectangles 数组,并将其分解为连接的矩形组.

比方说,例如,这些是我的矩形(构造函数采用的参数x,y,width,height):

Rectangle[] rects = new Rectangle[]
{
    new Rectangle(0, 0, 4, 2), //A
    new Rectangle(1, 1, 2, 4), //B
    new Rectangle(0, 4, 8, 2), //C
    new Rectangle(6, 0, 2, 2) //D
}
Run Code Online (Sandbox Code Playgroud)

快速绘图显示A相交B和B相交C.D不相交.一个繁琐的ascii艺术作品也完成了这项工作:

?????????   ?????
?A????? ?   ? D ?
?????????   ?????
  ? B ?                 
?????????????????
? ????? C       ?
?????????????????
Run Code Online (Sandbox Code Playgroud)

因此,我的函数的输出应该是:

new Rectangle[][]{
    new Rectangle[] {A,B,C},
    new Rectangle[] {D}
} …
Run Code Online (Sandbox Code Playgroud)

java algorithm recursion geometry arraylist

13
推荐指数
1
解决办法
4632
查看次数

标签 统计

algorithm ×1

arraylist ×1

geometry ×1

java ×1

recursion ×1