[アルゴリズム]迷宮探索2178py - BFS
8808 ワード
https://www.acmicpc.net/problem/2178
ラビリンス座標を与えることでBFSをナビゲート
1 (0,0) 0 1 1 1 1
1 (0,1) 0 1 0 1 0
1 (0,2) 0 1 0 1 1
1 (0,3) 1 1 0 1 1
東西南北をさぐる
最小距離を求める
1の格子が全部見つかりましたが、一番小さい格子の数はどうやって探しますか?
visited[a + dy[i]][b + dx[i]] = visited[a][b]+1
アクセス処理は、前の値に1を加算して表される.
同じ幅にナビゲートした値は同じアクセス値を持つため、結果値は最小です.
from collections import deque
n, m = map(int, input().split())
data = []
dx = [0, 0, -1, 1]
dy = [1, -1, 0, 0]
for i in range(n):
data.append(list(map(int, input())))
visited = [[0] * (m + 1) for i in range(n + 1)]
queue = deque([[0,0]])
visited[0][0] = 1
while queue:
a,b= queue.popleft()
if (a+1)==n and (b+1)==m:
print(visited[a][b])
break
for i in range(4):
if n>a + dy[i]>=0 and m>b + dx[i]>=0:
if data[a + dy[i]][b + dx[i]] == 1 and visited[a + dy[i]][b + dx[i]] == 0:
queue.append([a + dy[i], b + dx[i]])
visited[a + dy[i]][b + dx[i]] = visited[a][b]+1
ラビリンス座標を与えることでBFSをナビゲート
1 (0,0) 0 1 1 1 1
1 (0,1) 0 1 0 1 0
1 (0,2) 0 1 0 1 1
1 (0,3) 1 1 0 1 1
東西南北をさぐる
最小距離を求める
1の格子が全部見つかりましたが、一番小さい格子の数はどうやって探しますか?
visited[a + dy[i]][b + dx[i]] = visited[a][b]+1
アクセス処理は、前の値に1を加算して表される.
同じ幅にナビゲートした値は同じアクセス値を持つため、結果値は最小です.
Reference
この問題について([アルゴリズム]迷宮探索2178py - BFS), 我々は、より多くの情報をここで見つけました https://velog.io/@jifrozen/Algorithm-미로-탐색-2178.py-BFSテキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol