python 迷宫求路(递归方法)

该代码实现了一个名为MazeRoute的类,用于解决迷宫寻路问题。类中包含初始化方法、路径合法性判断方法以及深度优先搜索方法。在主函数中,通过输入迷宫的长和宽,调用MazeRoute的dfs方法寻找从起点到终点的路径。
摘要由CSDN通过智能技术生成

代码样本:

 

class MazeRoute:#  定义类MazeRoute
    def __init__(self,arr,m,n):#在类实例创建的时候自动会被执行。
        self.__arr = arr  # 定义私有类成员self.__arr二维列表作为迷宫
        self.__m = m    #  定义私有类成员self.__m为迷宫的深度
        self.__n = n     # 定义私有类成员self.__n为迷宫的长度
    def is_true(self, arr, y, x):  # 判断函数 判断当前路径是否合法
            if y > self.__n-1 or y < 0 or x > self.__m-1 or x < 0:  # 下一步是否合法
                return False  # 返回Flase
            elif arr[y][x] == -1 or arr[y][x] == 0 :
                return False
            else:
                return True  # 返回True
    def dfs(self, arr,lst, start_y, start_x,end_y,end_x):  # 递归深搜
            if start_y == self.__n - 1 and start_x == self.__m - 1:  # 如果当前坐标等于目标坐标
                lst.append((self.__n-1,self.__m-1))
                print(lst)
                return lst
            else:
                    self.__arr[start_y][start_x] = -1
                    lst.append((start_y, start_x))
                    for i in [[1, 0], [0, 1], [-1, 0], [0, -1]]:
                        if self.is_true(arr, start_y + i[0], start_x + i[1]):
                                self.dfs(arr,lst, start_y + i[0], start_x + i[1],end_y,end_x)
                                lst.pop()
                                break
def find_route(arr,n,m):
        lst = []
        end_y  =m-1
        end_x = n-1
        a = MazeRoute(arr,n,m)
        return a.dfs(arr,lst,0,0,end_y,end_x)
if __name__ == '__main__':
    n,m = map(int,input().split())
    arr = [[1,0,0,0],[1,1,0,0],[0,1,1,1],[0,0,0,1]]
    lst = []
    find_route(arr,n,m)

输入样本:

 解释:分别输入迷宫的长和宽

输出样本:

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值