Algorithm 如何检查二维数组中的每个元素是否连接在一起

Algorithm 如何检查二维数组中的每个元素是否连接在一起,algorithm,recursion,data-science,Algorithm,Recursion,Data Science,问题在标题中。我有一个二维阵列: array = [ [0, 0, 1, 0, 1], [0, 0, 1, 0, 1], [1, 1, 1, 1, 1], [0, 0, 1, 0, 0], [0, 0, 1, 0, 0] ] 如何检查此示例中的每个元素“1”是否都作为相邻元素横向或水平连接在一起。在本例中,函数应返回TRUE,因为所有1都连接在一起。相比之下: array = [ [0, 0, 0, 1, 1], [0, 0, 0, 1, 1], [0, 0, 0, 0, 0], [1, 1,

问题在标题中。我有一个二维阵列:

array = [
[0, 0, 1, 0, 1],
[0, 0, 1, 0, 1],
[1, 1, 1, 1, 1],
[0, 0, 1, 0, 0],
[0, 0, 1, 0, 0]
]
如何检查此示例中的每个元素“1”是否都作为相邻元素横向或水平连接在一起。在本例中,函数应返回TRUE,因为所有1都连接在一起。相比之下:

array = [
[0, 0, 0, 1, 1],
[0, 0, 0, 1, 1],
[0, 0, 0, 0, 0],
[1, 1, 0, 0, 0],
[1, 1, 0, 0, 0]
]
这应该返回FALSE,因为它们是1之间的一个分水岭,并且不是所有的1都是邻居

我最初的想法是遍历数组并检查相邻的项是否为1。但是,这不起作用,因为两个元素可以彼此相邻,但却远离组中的其他元素。非常感谢您的帮助。

您可以使用或

这些是探索算法,可以帮助您发现连接到起始节点的所有节点

“诀窍”是将矩阵视为一个图形,其中:

V = { (i,j) | a[i][j] == 1} (informally, all locations where there is 1 in the matrix
E = { ((i1, j1), (i2, j2)) | (i1, j1), (i2, j2) are adjacent }
然后,只需找到一个
a[i][j]==1
的位置,并从该位置启动BFS或DFS以覆盖所有可到达的节点

完成后,再次迭代矩阵,查看是否发现了每个
a[i][j]==1
元素

祝你好运

您可以使用或

这些是探索算法,可以帮助您发现连接到起始节点的所有节点

“诀窍”是将矩阵视为一个图形,其中:

V = { (i,j) | a[i][j] == 1} (informally, all locations where there is 1 in the matrix
E = { ((i1, j1), (i2, j2)) | (i1, j1), (i2, j2) are adjacent }
然后,只需找到一个
a[i][j]==1
的位置,并从该位置启动BFS或DFS以覆盖所有可到达的节点

完成后,再次迭代矩阵,查看是否发现了每个
a[i][j]==1
元素


祝你好运

首先,只需扫描阵列并计算所有的1。然后从任意1开始,使用泛洪填充算法计算可以达到多少个1。如果两个计数相等,则所有的1都是连接的。向我们展示您的尝试并解释您遇到的问题。首先,只需扫描阵列并计数所有的1。然后从任意1开始,使用泛洪填充算法计算可以达到多少个1。如果两个计数相等,则所有的1都是连接的。向我们展示您尝试了什么,并解释您在哪里遇到了麻烦