给定一个二值图像(二维数组), 判断 p[h_i][w_i] p[h_j][w_j] 是否联通。
class Solution:
def moving(self, matrix, startx, starty, endx, endy):
def dfs(matrix, startx, starty, endx, endy, rows, cols):
if startx == endx and starty == endy:
return True
if startx > 0 and matrix[startx-1][starty] == 1:
tmp = matrix[startx][starty]
matrix[startx][starty] = "#"
if dfs(matrix, startx-1, starty, endx, endy, rows, cols):
return True
matrix[startx][starty] = tmp
if startx < rows-1 and matrix[startx+1][starty] == 1:
tmp = matrix[startx][starty]
matrix[startx][starty] = "#"
if dfs(matrix, startx+1, starty, endx, endy, rows, cols):
return True
matrix[startx][starty] = tmp
if starty > 0 and matrix[startx][starty-1] == 1:
tmp = matrix[startx][starty]
matrix[startx][starty] = "#"
if dfs(matrix, startx, starty-1, endx, endy, rows, cols):
return True
matrix[startx][starty] = tmp
if starty < cols-1 and matrix[startx][starty+1] == 1:
tmp = matrix[startx][starty]
matrix[startx][starty] = "#"
if dfs(matrix, startx, starty+1, endx, endy, rows, cols):
return True
matrix[startx][starty] = tmp
rows, cols = len(matrix), len(matrix[0])
if matrix[startx][starty] == 1:
if dfs(matrix, startx, starty, endx, endy, rows, cols):
return True
return False2
s = Solution()
matrix = [[0,1,0,0,0], [0,0,1,0,1], [0,1,1,1,0], [0,0,1,1,1]]
startx = 1
starty = 2
endx = 3
endy = 4
result = s.moving(matrix, startx, starty, endx, endy)
print(result)