資料結構之 棧應用 老鼠迷宮問題

2021-08-10 09:16:10 字數 1285 閱讀 4785

老鼠迷宮問題是棧應用問題的乙個入門,通過對滿足要求的迷宮位置壓棧,同時,將位置置為不可用,來實現對從迷宮入口到出口的路徑尋找(非最優路徑)。

下面是關鍵的**:

#include "mymatrix.cpp"

#include

#include "mystack_array.cpp"

#include "pos.h"

void generatemat(mymatrix& mat)

}mat(2,2) = true;

mat(3,2) = true;

mat(3,3) = true;

mat(3,4) = true;

mat(3,5) = true;

mat(3,6) = true;

mat(3,6) = true;

mat(4,6) = true;

}bool findpath(mymatrix& mat)

std::stack

mst;

mst.push(cur);

mat(cur.rows(),cur.cols()) = false;

pos end(mat.rows() - 1, mat.cols() - 1);

pos offset[4];

offset[0] = pos(1,0);

offset[1] = pos(0,1);

offset[2] = pos(-1,0);

offset[3] = pos(0,-1);

int cnt = 0;

cur = cur + offset[cnt];

while (cur != end)

else

else

else}}

}if (cur == end && mat(cur.rows(), cur.cols()))

while (!mst.empty())

return ***;

}void main(void)

else

std::system("pause");

}

其中矩陣的類使用的是之前自己寫的矩陣模板類,棧使用的是stl的。pos類是用於表示矩陣位置的類。中間加入了一些列印的資訊來顯示整個過程。

當然,這個尋找路徑的過程並不是最優的過程,結果也不是最優的路徑,之後的佇列應用會獲得最佳結果。

下面是結果截圖:

《資料結構》 棧的應用 迷宮求解問題

利用棧求解迷宮問題 只輸出乙個解,演算法3.3 typedef struct 迷宮座標位置型別 postype define maxlength 25 設迷宮的最大行列為25 typedef int mazetype maxlength maxlength 迷宮陣列 行 列 全域性變數 mazety...

資料結構之棧的應用 迷宮求解

程式設計思想 1 迷宮地圖相關 利用動態二維陣列來初步勾勒出迷宮 建議先用malloc申請一維陣列,再用calloc申請每個元素中的一維陣列,因為我用的是1來表示迷宮的通路,0表示死路,calloc申請完後就會自動初始化為0 迷宮交岔路結點 我們要有乙個掃瞄通路的函式,對乙個座標進行東南西北的掃瞄,...

資料結構之迷宮問題

求迷宮問題就是求出從入口到出口的路徑。在求解時,通常用的是 窮舉求解 的方法,即從入口出發,順某一方向向前試探,若能走通,則繼續往前走 否則沿原路退回,換乙個方向再繼續 試探,直至所有可能的通路都試探完為止。為了保證在任何位置上都能沿原路退回 稱為回溯 需要用乙個後進先出的棧來儲存從入口到當前位置的...