第12周專案5 迷宮問題

2021-07-24 20:43:35 字數 1805 閱讀 6493

問題:

/*

* all right reserved.

* 檔名稱:123.cpp

* 完成日期;2023年11月24日

* 版本號;v1.0

* 問題描述:

設計乙個程式,採用深度優先遍歷演算法的思路,解決迷宮問題。

(1)建立迷宮對應的圖資料結構,並建立其鄰接表表示。

(2)採用深度優先遍歷的思路設計演算法,輸出從入口(1,1)點到出口(m,n)的所有迷宮路徑。

* 輸入描述:迷宮的鄰接矩陣

* 程式輸出:鄰接表表示迷宮,走出迷宮所有的路徑

*/

**:

#include #include #define maxsize 100

#define m 8

#define n 8

//以下定義鄰接表型別

typedef struct anode //邊的結點結構型別

arcnode;

typedef struct vnode //鄰接表頭結點的型別

vnode;

typedef struct

algraph; //圖的鄰接表型別

typedef struct

box;

typedef struct

pathtype; //定義路徑型別

int visited[m+2][n+2]= ;

int count=0;

void createlist(algraph *&g,int mg[n+2])

//建立迷宮陣列對應的鄰接表g

if (mg[i1][j1]==0) //(i1,j1)為可走方塊

di++;}}

}//輸出鄰接表g

void dispadj(algraph *g)

printf("\n");

}}void findpath(algraph *g,int xi,int yi,int xe,int ye,pathtype path)

visited[xi][yi]=0;

}int main()

, ,,,

,,,,

,,};createlist(g,mg);

printf("迷宮對應的鄰接表:\n");

dispadj(g); //輸出鄰接表

pathtype path;

path.length=0;

printf("所有的迷宮路徑:\n");

findpath(g,1,1,m,n,path);

return 0;

}

執行結果:

注:因路徑過多,只擷取部分展示

知識點總結:

通過圖的物理結構——鄰接表以及其深度優先遍歷(dfs)來解決實際問題

學習心得:

解決複雜問題時,要將問題的演算法自己畫一遍,並把關鍵步驟理清楚再編寫**。

第12周專案5 迷宮問題

問題及 檔名稱 1.cpp 作 者 申鵬鵬 完成日期 2016年12月8日 版 本 號 v1.0 問題描述 設計乙個程式,採用深度優先遍歷演算法的思路,解決迷宮問題。1 建立迷宮對應的圖資料結構,並建立其鄰接表表示。2 採用深度優先遍歷的思路設計演算法,輸出從入口 1,1 點到出口 m,n 的所有迷...

第5周專案1 (2)

main.cpp 作者 李鑫 完成日期 2016.3.31 問題描述 在上面程式的基礎上,重新定義 類,其中邏輯特別簡單的set和get成員函式,要處理為內聯成員函式,直接在類內定義。include includeusing namespace std class void setb double ...

第12周 專案1(2)

問題及 檔名稱 main.cpp 作 者 賈慶嚴 完成日期 2016年6月15日 版 本 號 v1.0 問題描述 用類的成員函式,定義複數類過載運算子 使之能用於複數的加減乘除 include using namespace std class complex complex double r,do...