用bfs
python:
from collections import deque n,m = map(int,input().split()) test = ["#####", "# # #", "# # #", "# #", "#####"] d = [(0,-1),(0,1),(1,0),(-1,0)] arr = [] for i in range(n): arr.append(list(input())) x1,y1 = 1,1 #開始座標 x2,y2 = n-2,m-2 #結束座標 dist = [[-1]*n for _ in range(m)] #距離紀錄 dist[x1][y1] = 0 q = deque([(x1,y1)]) while q: x,y = q.popleft() for dx,dy in d: nx = dx + x ny = dy + y if (x,y) == (x2,y2): #如果到達終點 break #提早結束BFS if 0 <= nx < n\ and 0 <= ny < m\ and arr[nx][ny] != "#"\ and dist[nx][ny] == -1: dist[nx][ny] = 1 + dist[x][y] q.append((nx,ny)) #加入鄰居作為下一步 print(dist[x2][y2])