有一个任意大小的二维网格(例如1000 * 1000)。
图案如下:
给定的输入是四个整数:x y w h,表示每个矩形左下角的坐标(x,y)及其宽度和高度。
具有共享边缘或重叠的矩形被定义为连接的。
一组连接的矩形被定义为群集。
每个单元格上的矩形数量被定义为其厚度。
因此,问题要求计算: 1.最大厚度 2.集群数 3.单个集群中集群元素的最大数量 4.单个集群的最大面积
例如,在上面的图片中,最大厚度为3,有2个集群。一个集群由3个矩形组成,其面积为44。另一个集群中的元素数量为4,面积为30。因此,具有最大集群元素数量的集群为4,最大集群面积为44。
我的解决方案相当幼稚。我使用了一个二维int数组来表示网格。在读取输入时,我只需增加相应单元格中的数字即可。读完所有输入后,我使用深度优先搜索来确定群集。
问题是我的算法非常慢,当给出大型输入时很快变得无法使用(例如,当网格大小超过1000 * 1000时)。
因此,我想知道是否有任何有效的数据结构和算法来解决这个问题?
图案如下:
给定的输入是四个整数:x y w h,表示每个矩形左下角的坐标(x,y)及其宽度和高度。
具有共享边缘或重叠的矩形被定义为连接的。
一组连接的矩形被定义为群集。
每个单元格上的矩形数量被定义为其厚度。
因此,问题要求计算: 1.最大厚度 2.集群数 3.单个集群中集群元素的最大数量 4.单个集群的最大面积
例如,在上面的图片中,最大厚度为3,有2个集群。一个集群由3个矩形组成,其面积为44。另一个集群中的元素数量为4,面积为30。因此,具有最大集群元素数量的集群为4,最大集群面积为44。
我的解决方案相当幼稚。我使用了一个二维int数组来表示网格。在读取输入时,我只需增加相应单元格中的数字即可。读完所有输入后,我使用深度优先搜索来确定群集。
问题是我的算法非常慢,当给出大型输入时很快变得无法使用(例如,当网格大小超过1000 * 1000时)。
因此,我想知道是否有任何有效的数据结构和算法来解决这个问题?