给定一组代表矩阵中位置的元组。
for example {(1, 2), (1, 3), (2, 2), (0, 3), (0, 4)}
其中元组(r,k)表示行r和列k。 我怎样才能确定它们是否挂在一起?
examples
{(1, 2), (1, 3), (2, 2), (0, 3), (0, 4)} => hangs together
{(1, 2), (1, 4), (2, 2), (0, 3), (0, 4)} => doesnt hang together
答案 0 :(得分:1)
我只是做简单的BFS或DFS,例如:
def connected(cells):
if cells:
cells = cells.copy()
stack = [cells.pop()]
while stack:
i, j = stack.pop()
neighbors = {(i-1, j), (i+1, j), (i, j-1), (i, j+1)} & cells
stack.extend(neighbors)
cells -= neighbors
return not cells
用法/演示:
for cells in ({(1, 2), (1, 3), (2, 2), (0, 3), (0, 4)},
{(1, 2), (1, 4), (2, 2), (0, 3), (0, 4)}):
print(connected(cells))
打印:
True
False