5014番スタートリンク
5560 ワード
質問する
インプット
正解 import sys
from collections import deque
f, s, g, u, d = map(int, input().split())
visited = [0 for i in range(f+1)]
dq = deque()
dq.append((s, 0))
cnt = -1
while dq:
a, b = dq.popleft()
if a == g:
cnt = b
break
if a+u <= f:
if visited[a+u] == 0:
dq.append((a+u, b+1))
visited[a+u] = 1
if a-d >= 1:
if visited[a-d] == 0:
dq.append((a-d, b+1))
visited[a-d] = 1
if cnt == -1:
print('use the stairs')
else:
print(cnt)
説明:
s->開始レイヤ
g->ターゲット層
u->上キー層数
d->下のボタンレイヤ数
現在の層数+uまたは-dが到達可能な層数である場合、
dqを挿入し、bfsを現在の層数が目標層であるgに達するまで回転させる
g層に達していない場合はuse the sta階段を出力する
そうでない場合はcnt、使用するボタン数を出力します
ポスト
私は全部解けましたが、印刷物を変なところに書いたので、二度も気づかなかった.
bfsが金メダル4,5を解くことができて嬉しいです.🚀🎇
Reference
この問題について(5014番スタートリンク), 我々は、より多くの情報をここで見つけました
https://velog.io/@slbin-park/5014번-스타트링크-파이썬
テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol
正解 import sys
from collections import deque
f, s, g, u, d = map(int, input().split())
visited = [0 for i in range(f+1)]
dq = deque()
dq.append((s, 0))
cnt = -1
while dq:
a, b = dq.popleft()
if a == g:
cnt = b
break
if a+u <= f:
if visited[a+u] == 0:
dq.append((a+u, b+1))
visited[a+u] = 1
if a-d >= 1:
if visited[a-d] == 0:
dq.append((a-d, b+1))
visited[a-d] = 1
if cnt == -1:
print('use the stairs')
else:
print(cnt)
説明:
s->開始レイヤ
g->ターゲット層
u->上キー層数
d->下のボタンレイヤ数
現在の層数+uまたは-dが到達可能な層数である場合、
dqを挿入し、bfsを現在の層数が目標層であるgに達するまで回転させる
g層に達していない場合はuse the sta階段を出力する
そうでない場合はcnt、使用するボタン数を出力します
ポスト
私は全部解けましたが、印刷物を変なところに書いたので、二度も気づかなかった.
bfsが金メダル4,5を解くことができて嬉しいです.🚀🎇
Reference
この問題について(5014番スタートリンク), 我々は、より多くの情報をここで見つけました
https://velog.io/@slbin-park/5014번-스타트링크-파이썬
テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol
import sys
from collections import deque
f, s, g, u, d = map(int, input().split())
visited = [0 for i in range(f+1)]
dq = deque()
dq.append((s, 0))
cnt = -1
while dq:
a, b = dq.popleft()
if a == g:
cnt = b
break
if a+u <= f:
if visited[a+u] == 0:
dq.append((a+u, b+1))
visited[a+u] = 1
if a-d >= 1:
if visited[a-d] == 0:
dq.append((a-d, b+1))
visited[a-d] = 1
if cnt == -1:
print('use the stairs')
else:
print(cnt)
s->開始レイヤ
g->ターゲット層
u->上キー層数
d->下のボタンレイヤ数
現在の層数+uまたは-dが到達可能な層数である場合、
dqを挿入し、bfsを現在の層数が目標層であるgに達するまで回転させる
g層に達していない場合はuse the sta階段を出力する
そうでない場合はcnt、使用するボタン数を出力します
ポスト
私は全部解けましたが、印刷物を変なところに書いたので、二度も気づかなかった.
bfsが金メダル4,5を解くことができて嬉しいです.🚀🎇
Reference
この問題について(5014番スタートリンク), 我々は、より多くの情報をここで見つけました
https://velog.io/@slbin-park/5014번-스타트링크-파이썬
テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol
Reference
この問題について(5014番スタートリンク), 我々は、より多くの情報をここで見つけました https://velog.io/@slbin-park/5014번-스타트링크-파이썬テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol