def if_has_next(arr, i, j, curr):     arr[i][j] = 0     next = []     left = max(j-1, 0)     right = min(j+1, N-1)     top = max(i-1, 0)     down = min(i+1, M-1)     for row in range(top, down+1):         for col in range(left, right+1):             if arr[row][col] == 1:                 arr[row][col] = 0                 next.append([row, col])     if next:         for loc in next:             curr += 1             curr = if_has_next(arr, loc[0], loc[1], curr)     return curr if __name__ == "__main__":     M, N = tuple(map(int, input().split(',')))     arr = [list(map(int, input().split(','))) for _ in range(M)]     P = 0     Q = 0     for i in range(M):         for j in range(N):             curr_q = 0             if arr[i][j] == 0:                 continue             else:                 P += 1                 curr_q += 1                 curr_q = if_has_next(arr, i, j, curr_q)                 # print('{}{},{}'.format(i,j,curr_q))                 Q = max(Q, curr_q)     print("{},{}".format(P, Q)) 仅有的一道ac...献丑了,大神轻喷。。 大概思路就是dfs,一直搜索下去看是否有临近的观众 需要注意的点就是搜过的位置要将“1”改成“0” 边界处理是个头疼的事,debug了好久。。(毕竟渣)
点赞 评论

相关推荐

牛客网
牛客企业服务