bfs dequeの更新
6466 ワード
次のラウンドでは、アクセスするノードをtemp変数に配置します.
ドアが閉まるとqにtempを加えます.
👉 temp変数は必要ありません.⭐⭐
ドアが閉まるとqにtempを加えます.
while True:
temp = deque([])
while q:
x, y, time = q.popleft()
for k in range(4):
xx = x + dx[k]
yy = y + dy[k]
if 0 <= xx < h and 0 <= yy < w:
if data[xx][yy] == "." and visited[xx][yy] == 0:
continue
visited[xx][yy] = 1
temp.append([xx, yy, time + 1])
if not temp:
break
q = temp
while文の終了条件を更新前qの長さに設定👉 temp変数は必要ありません.⭐⭐
while q:
qlen = len(q)
while qlen:
x, y, time = q.popleft()
for k in range(4):
xx = x + dx[k]
yy = y + dy[k]
if 0 <= xx < h and 0 <= yy < w:
if data[xx][yy] == "." and visited[xx][yy] == 0:
visited[xx][yy] = 1
q.append([xx, yy, time + 1])
qlen -= 1
Reference
この問題について(bfs dequeの更新), 我々は、より多くの情報をここで見つけました https://velog.io/@guswns3371/bfs-deque-업데이트テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol