# 模組化,重整程式
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分別表示迷宮中的通路和障礙。設計乙個程式,對任意設定的迷宮,求出一條從入口到出口的通路,或得出沒有通路的結論,基本要求 首先實現乙個以煉表作儲存結構的棧型別,然後編寫乙個求解迷宮的非遞迴的程式,求得的通路以三元...