用棧實現走迷宮

2021-07-11 04:56:55 字數 1224 閱讀 6436

假設迷宮從出發點到終點最多只有一條通路。

#include

//2016/4/14/15:11

#define max 100

struct path

;using

std::cin;

using

std::cout;

using

std::endl;

void findnext(path *s, int &i, int &j, int t[max], int top);

void maze(int t[max], int start_i, int start_j, int end_i, int end_j);

intmain()

else}}

maze(t, start_i, start_j, end_i, end_j);

return0;}

void

findnext(path *s, int &i, int &j, int t[max], int top)//找尋下乙個可能的位置,如果找不到則令i = 0, j = 0

else

if (t[i + 1][j] != 0 && i + 1 != s[top - 1].i)//向下探索

else

if (t[i][j - 1] != 0 && j - 1 != s[top - 1].j)//向左探索

else

if (t[i][j + 1] != 0 && j + 1 != s[top - 1].j)//向右探索

else

//未找到能走的點,以將i,j賦為0作為標誌

}void

maze(int t[max], int start_i, int start_j, int end_i, int end_j)

findnext(s, i, j, t, top);//通過本函式找到下乙個可走的位置

if (i == 0 && j == 0)//如果沒有可走的位置

else

//找到了可走的位置,則將其加入棧

}if (top == -1)//如果棧空,表明沒有通路

else

//如果棧不空,則棧中元素即使通往終點的通路

cout

<< "the length of path is "

<< top + 1

<< endl;//輸出路徑的長度

}}

用棧走迷宮問題

在這裡插入描述 棧 stack 又名堆疊,它是一種運算受限的線性表。限定僅在表尾進行插入和刪除操作的線性表。這一端被稱為棧頂,相對地,把另一端稱為棧底。向乙個棧插入新元素又稱作進棧 入棧或壓棧,它是把新元素放到棧頂元素的上面,使之成為新的棧頂元素 從乙個棧刪除元素又稱作出棧或退棧,它是把棧頂元素刪除...

用棧實現迷宮s

迷宮問題是經典的一類問題,如何從給出的入口找到對應的出口,實現的方法和馬踏棋盤問題相似也是通過找到周圍 8個方向座標的關係,然後依據深度優先搜尋方法和一定的條件找到下一步對應的出路。由於迷宮問題需要儲存具體的完成路徑,這與前面的問題存在一定的差別。採用棧能夠很好的解決這個問題,其中棧結構用來儲存具體...

走迷宮 棧的使用

include define max stack size 64 define maze size 7 define exit row 5 define exit col 5 struct element struct offset char move str int maze maze size ...