はしごを登る(DFS)
7058 ワード
深度/幅優先ナビゲーション(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)
リファレンスReference
この問題について(はしごを登る(DFS)), 我々は、より多くの情報をここで見つけました https://velog.io/@jsj3282/사다리-타기DFSテキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol