方阵遍历对具有相同值的相邻单元进行分组

2024-03-28 11:32:39 发布

您现在位置:Python中文网/ 问答频道 /正文

给定一个样本方阵(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)。谢谢你的帮助。提前谢谢。你知道吗


Tags: of算法forifgroup矩阵allpush
1条回答
网友
1楼 · 发布于 2024-03-28 11:32:39

你可以把这个矩阵想象成一个图形。所以在每个坐标处,这个点与其他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,您可以很容易地找到具有相同值的坐标集。你知道吗

希望这有帮助!你知道吗

相关问题 更多 >