😊 白駿2667:番号のみ


2667:番号のみ DFS/BFS第四題!
東ビンナのアルゴリズムの授業を聞いて答えた.
講義上の質問タイプと同じように、簡単な解答をしました.

📌 Try 1

def dfs(x, y):
    if x < 0 or x >= N or y < 0 or y >= N:
        return 0
        
    if graph[x][y] == 1:
        graph[x][y] = 0
        
        return 1 + dfs(x-1, y) + dfs(x+1, y) + dfs(x, y-1) + dfs(x, y+1)
    
    return 0

N = int(input())
graph, result = [], []

for _ in range(N):
    graph.append(list(map(int, input())))
    
for i in range(N):
    for j in range(N):
        if graph[i][j] == 1:
            result.append(dfs(i, j))

print(len(result))
for x in sorted(result):
    print(x)
dfsを再帰的解として表す.graphの形態はdouble-listである.

🎁 Reference

  • 東賓奈科泰河三江
    https://www.youtube.com/watch?v=7C9RgOcvkvo