非递归迷宫问题实现

# 模块化,重整程序
class Lstack():
    def __init__(self,top=-1,full=20):
        self._top = top
        self._stack=[]
        self.full = full
    def is__full(self):
        return self.full == self._top+1
    def is_empty(self):
        return self._top == -1
    def push(self,x):
        if self.full == self._top+1:
            print("堆栈已满")
        else:
            self._stack.append(x)
            self._top += 1
    def pop(self):
        if self._top == -1:
            print("堆栈为空,不可弹出")
        else:
            top =self._top
            self._top -= 1
            return self._stack.pop(top) 

def mark(maze,pos): # 主函数的标记模块
    maze[pos[0],pose[1]]=2
    
# 主函数
def stack_find(maze,pos,end):
        p =[(1,0), (0,1),(-1,0),(0,-1)]  # 四个方向的增量
    st = Lstack()
    st.push(pos)
    while not st.is_empty():
        if pos == end:
            print ('路径')
            return True
        else:
            pos_ =pos
            for i in  range(4):
                pos_new = pos+p[i]
                if maze[pos_new[0],pos_new[1]] == 0: # 如果未访问
                    st.push(pos)      # 前进
                    pos =pos_new
                    mark(maze,pos) # 标记
                    break
            if pos == pos_:# 如果四个方向都没有
                pos =st.pop()       # 后退
    print('NO found !')
            

# 
import numpy
def test():
    maze=
    pos=
    end =
    stack_find(maze,pos,end)

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值