資料結構 迷宮問題

2021-09-05 11:23:55 字數 1447 閱讀 6630

任務:可以輸入乙個任意大小的迷宮資料,用非遞迴的方法求出一條走出迷宮的路徑,並將路徑輸出;

要求:在上交資料中請寫明:儲存結構、基本演算法(可以使用程式流程圖)、源程式、測試資料和結果、演算法的時間複雜度、另外可以提出演算法的改進方法;

該課設意在考察棧和佇列的資料結構,我主要說一下**的設計思路,供諸君參考,也方便以後自己複習。

要說考察掌握棧和佇列最好是自己定義乙個棧資料結構,我這裡偷懶了,直接用的stack標頭檔案,queue沒用上。

測試資料已給出在**最後// @chenye 2018/12/27

#include #include #include #include #define green setconsoletextattribute(getstdhandle(std_output_handle),foreground_green|foreground_intensity)

#define white setconsoletextattribute(getstdhandle(std_output_handle),foreground_red|foreground_blue|foreground_green)

#define red setconsoletextattribute(getstdhandle(std_output_handle),foreground_red|foreground_intensity)

#define yellow setconsoletextattribute(getstdhandle(std_output_handle),foreground_red|foreground_green|foreground_intensity)

#define maxsize 100 // 正方形迷宮的最大尺寸

using namespace std;

typedef struct position

position;

int searchway(int x1,int y1,int x2,int y2,int maze[maxsize][maxsize])

while(!so.empty()) // 輸出

cout<

return 1;

}// 沒走到終點

find = 0;

while(next<4&&find==0) // 查詢該位置,即當前(x,y)可以走的方向

if(maze[x][y]==0) // (x,y)可以走

}if(find == 1)// 走得通

else// 走不通

}return 0; // 無路徑

}void manuallycreate()

else if(choice==1)

else

{red;

cout<

資料結構 迷宮問題

迷宮問題的總體思路是,從迷宮的入口出發,沿著某乙個方向向前試探,若能夠行得通,則繼續往前走,否則原來返回,再換另乙個方向繼續試探,直到所有可能的通路都被試探過,為了保證在任何乙個位置都能夠原來返回,需要設定乙個堆疊結構來儲存從入口到當前位置的路徑。maze.h pragma once include...

資料結構 迷宮問題

設計乙個迷宮求解程式,要求如下 以m n表示長方陣表示迷宮,求出一條從入口到出口的通路,或得出沒有通路的結論。能任意設定的迷宮 include using namespace std define maxsize 1000 int mg maxsize maxsize typedef structb...

資料結構之迷宮問題

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