234234234

用递归统计矩阵的连通个数

 

 

def getConnectedNum(mat):
    cnt = 0
    h = len(mat)
    for i in range(h):
        w = len(mat[i])
        for j in range(w):
            if mat[i][j] == 0:
                cnt = cnt + 1
                seekConnected(mat, i, j, h, w)
          # 打印
for i in range(h): for j in range(w): print(mat[i][j], end="\t") print() print() return cnt def seekConnected(mat, i, j, h, w, border = None): if i < 0 or j < 0 or i > h-1 or j > w-1 or mat[i][j] == 1: return mat[i][j] = 1 seekConnected(mat, i - 1, j, h, w) seekConnected(mat, i + 1, j, h, w) seekConnected(mat, i, j - 1, h, w) seekConnected(mat, i, j + 1, h, w) pass if __name__ == '__main__': mat = [ [0, 0, 1, 1, 0, 1, 1, 1, 1], [0, 0, 1, 1, 0, 1, 1, 1, 1], [0, 0, 1, 1, 1, 1, 1, 0, 0], [0, 0, 1, 1, 0, 1, 1, 1, 1] ] print(getConnectedNum(mat)) pass

 

posted @ 2021-02-22 21:58  你若愿意,我一定去  阅读(102)  评论(0编辑  收藏  举报
23423423423