はしごを登る(DFS)


深度/幅優先ナビゲーション(DFS、BFS)による


に質問


はしごを登る(DFS)


ヒョンスは友達とビスケットを買うために梯子遊びをした.勾配表示は2 D平面をゼロで塗りつぶし、勾配を1で表します.賢洙は特定の目的地に着くために何列目から出発すべきか知りたい.特定の到着点は2と表記されている.みんな助けてはしごの地図が10*10なら

特定目的地2に到着するには、7番列車の出発地から出発することができます.
■説明の入力
10*10の梯子地図.
■出力説明
出発地10号を印刷してください.

コード#コード#💻

import sys
#sys.stdin = open("input.txt", "rt")            # read text

def DFS(x, y):
    ch[x][y] = 1
    if x == 0:                                  # 종착점에 도착       
        print(y)
    else:
        if y - 1 >= 0 and board[x][y-1] == 1 and ch[x][y-1] == 0:
            DFS(x, y-1)                         # 왼쪽으로 이동
        elif y + 1 < 10 and board[x][y+1] == 1 and ch[x][y+1] == 0:
            DFS(x, y+1)                         # 오른쪽으로 이동
        else:
            DFS(x-1, y)                         # 왼쪽, 오른쪽으로 이동 못하면 위로 이동

if __name__ == "__main__":
    board = [list(map(int, input().split())) for _ in range(10)]
    ch = [[0] * 10 for _ in range(10)]          # 방문 체크 배열
    for y in range(10):                         
        if board[9][y] == 2:                    # 맨 아래쪽 행만 탐색
            DFS(9, y)
リファレンス
  • インフラストラクチャ:Pythonアルゴリズム回答