5014番スタートリンク


質問する



インプット



正解

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を解くことができて嬉しいです.🚀🎇