HJ43 迷宫问题
深度优先搜索
比较常规的dfs矩阵
## 迷宫问题
## DFS
## 输入N M 这里按照题目:N是行数 M是列数
# N,M = list(map(int,input().split()))
# maze = [list(map(int,input().split())) for _ in range(N)]
N,M =5,5
maze = [[0, 1, 0, 0, 0], [0, 1, 0, 1, 0], [0, 0, 0, 0, 1], [0, 1, 1, 1, 0], [0, 0, 0, 0, 0]]
# print(maze)
path = [(0,0)] #里面放()
## 从x y 处开始深度优先遍历
def dfs(maze,x,y):
# 题目中只是说不能斜着走 那么就有四个方向 上下左右 对应
dx = [-1,1,0,0]
dy = [0,0,-1,1]
## 递归退出条件
if x==N-1 and y==M-1:
## 输出path
# print(path)[(0, 0), (1, 0), (2, 0), (3, 0), (4, 0), (4, 1), (4, 2), (4, 3), (4, 4)]
for dot in path:
print('('+str(dot[0])+','+str(dot[1])+')')
return
for i in range(4):
## 注意这里是在传入的x y基础上调方向 一开始 习惯 += debug 发现了这个地方写错了
xx =x+dx[i]
yy =y+dy[i]
if xx>=0 and xx<N and yy>=0 and yy<M and maze[xx][yy] ==0:
maze[xx][yy] = 1
path.append((xx,yy))
dfs(maze,xx,yy)
path.pop()
maze[xx][yy] = 0
maze[0][0]=1
dfs(maze,0,0)