题目描述:在[m,n]的矩阵中,用1表示有人,0表示没人。假如两个人的位置相邻(包括斜着相邻,水平相邻,垂直相邻),则他们是属于一个团体。
输入:
第一行输入两个数m,n,用,隔开
接下来输入m行,每一行输入n个数,用逗号隔开
输出:
矩阵中有多少个团体,以及最大团体的人数。
例如:
输出6,11(程序没有管输出的格式,自己可以修改)
import sys
global r
r = []
global r1
r1 = 0
def judge(a, x, y):
if a[x][y] == 1:
global r1
r1 = r1 + 1
a[x][y] = -1
return True
else:
return False
def move(a, x, y, m, n):
if x < 0 or y < 0 or x >= m or y >= n or a[x][y] != 1:
return
else:
if judge(a, x, y):
move(a, x, y + 1, m, n)
move(a, x, y - 1, m, n)
move(a, x + 1, y, m, n)
move(a, x - 1, y, m, n)
move(a, x - 1, y - 1, m, n)
move(a, x - 1, y + 1, m, n)
move(a, x + 1, y + 1, m, n)
move(a, x + 1, y - 1, m, n)
if __name__ == '__main__':
d = sys.stdin.readline().strip().split(',')
m = int(d[0])
n = int(d[1])
a = []
for i in range(0, m):
b = sys.stdin.readline().strip().split(',')
b = map(int, b)
a.append(b)
c = 0
for i in range(0, m):
for j in range(0, n):
if a[i][j] == 1:
r1 = 0
c = c + 1
move(a, i, j, m, n)
r.append(r1)
r1 = 0
print c
print r