非遞迴迷宮問題實現

2021-08-21 06:57:47 字數 1312 閱讀 8516

# 模組化,重整程式

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._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)

非遞迴實現迷宮求解

迷宮求解問題 用乙個m n的矩陣表示迷宮,0和1分別表示迷宮中的通路和障礙。設計乙個程式,對給定的迷宮,求出找到的第一條從入口到出口的通路,或得到沒有通路的結論。我們指定 迷宮的入口為矩陣的左上角 1,1 迷宮的出口為右下角 m,n 路徑的探索順序依次為 東南西北 即 右下左上 輸入 第一行輸入兩個...

python利用棧實現迷宮(非遞迴)

1 建立迷宮地圖,可以用二維陣列表示,01分別表示牆和路 2 設定迷宮的起點和終點 3 將起點push進儲存路徑的棧。從棧頂元素開始,搜尋其上下左右格仔,如果可達,則將搜尋到的可達的格仔push到當前路徑中 並標記該格仔已經遍歷過 如果乙個格仔周圍的四個格仔均不可走,則將該格仔從路徑中pop 並標記...

迷宮問題求解 C 非遞迴程式

迷宮問題求解 c 非遞迴程式 一 實驗內容 問題描述 以乙個m n的長方陣表示迷宮,0,1分別表示迷宮中的通路和障礙。設計乙個程式,對任意設定的迷宮,求出一條從入口到出口的通路,或得出沒有通路的結論,基本要求 首先實現乙個以煉表作儲存結構的棧型別,然後編寫乙個求解迷宮的非遞迴的程式,求得的通路以三元...