牛客_华为_HJ43 迷宫问题

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)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值