给定一个样本方阵(0,1),如下所示:
0 1 1 0 0 0
0 0 1 0 0 1
0 0 0 1 0 1
1 0 0 0 0 1
0 1 0 0 0 1
1 0 0 1 0 0
期望输出是值等于1的单元格组数。e、 g.上述矩阵的输出为:
Group #1: (0,1), (0,2), (1,2), (2,3)
Group #2: (1,5), (2,5), (3,5), (4,5)
Group #3: (3,0), (4,1), (5,0)
Group #4: (5,3)
我目前的算法如下:
for i = 0, i < matrix.dimension, i++
for j = 0, j < matrix.dimension, j++
if (i,j),(i,j+1),(i,j-1),(i-1,j),(i-1,j+1),(i-1,j-1),(i+1,j),(i+1,j+1),(i+1,j-1) = 1
push all pairs of i, j = 1 into a group
但是我被困在如何将(2,3)
和(2,5)
分成两组,因为它们仍然在(i+/-1, j+/-1)
的范围内,例如,如果我遍历到细胞(2,4)
。谢谢你的帮助。提前谢谢。你知道吗
你可以把这个矩阵想象成一个图形。所以在每个坐标处,这个点与其他8个点相连,即
(x+1, y)
、(x+1,y-1)
、(x+1,y+1)
、(x,y+1)
、(x,y-1)
、(x-1,y)
、(x-1,y+1)
、(x-1,y-1)
。你知道吗所以你的点
(x,y)
将连接到上面的8个点。现在你面前有一张图表。你知道吗现在在这个图上运行
DFS
,您可以很容易地找到具有相同值的坐标集。你知道吗希望这有帮助!你知道吗
相关问题 更多 >
编程相关推荐