Connected Cells in a Grid

  • + 0 comments

    visited_nodes=[] region_count=0 def dfs(matrix,i,j): global region_count

    for p in range(-1,2):
        for q in range(-1,2):
            if i+p>=0 and i+p<len(matrix) and j+q>=0 and j+q<len(matrix[0]):
                if matrix[i+p][j+q]==1 and not (i+p,j+q) in visited_nodes:
                    print(i+p,j+q)
                    visited_nodes.append((i+p,j+q))
                    region_count+=1
                    dfs(matrix,i+p,j+q)
    

    def connectedCell(matrix): global region_count global visited_nodes max_count=0; matrix_rows=len(matrix) matrix_columns=len(matrix[0]) visited_nodes=[] for i in range(matrix_rows): for j in range(matrix_columns): if matrix[i][j]==1 and not (i,j) in visited_nodes: region_count=1 visited_nodes.append((i,j)) dfs(matrix,i,j) print(f"{i}-{j} ===> {region_count}") if region_count>max_count: max_count=region_count region_count=1 return max_count