输入一个整数m,表示输入矩阵的边长,接下来输入m行,每行m个数(0或1),每个数用空格分开。假设上下左右相邻,则认为是1个团体;如:
1 1
1 1
或
1
1
1
或
1 1 1
都是来自一个团体,最后输出一共有多少个团体。
import sys
m = int(sys.stdin.readline())
grid = []
for _ in range(m):
each = list(map(int, sys.stdin.readline().split()))
grid.append(each)
def dfs(i, j):
if 0 <= i < m and 0 <= j <m and grid[i][j]:
grid[i][j] = 0
return dfs(i, j-1) + dfs(i, j+1) + dfs(i-1, j) + dfs(i+1, j) + 1
return 0
nums = [dfs(i, j) for i in range(m) for j in range(m)]
print(len(nums)-nums.count(0))