求解迷宮問題

2021-08-18 06:00:25 字數 864 閱讀 6198

/*求解迷宮問題*/

#include using namespace std;

const int m = 6;

const int n = 8;

int maze[m+2][n+2]; //m×n大小的迷宮,0可前進,1通行受阻。並且在迷宮的周圍鑲上邊框

int mark[m+2][n+2]; //儲存訪問標記,0未訪問,1已訪問

int m[4][2] = ,,,};

//行下標0,1,2,3代表上下左右四個方向

//從迷宮中座標點(x,y)的位置尋找通向終點(m,n)的路徑,若找到

//則返回1,否則返回0,(x,y)的初始值通常為(1,1)

int seekpath(int x,int y)

{ int i; //i作為迴圈變數,代表從當前位置移到下乙個位置的方向

int a,b; //a和b作為下乙個位置的座標

if((x == m) && (y == n))

return 1;

for(i = 0; i < 4; i++) //依次按每乙個方向尋找通向終點的路徑

{ a = x + m[i][0];

b = y + m[i][1];

if((maze[a][b] == 0) && (mark[a][b] == 0))

{ mark[a][b] = 1;

if(seekpath(a,b))

{cout<<"("<>maze[i][j];

memset(mark,0,sizeof(mark));

mark[1][1] = 1;

if(seekpath(1,1))

cout<<"("<<1<<","<<1<<")"<

迷宮問題求解

對於迷宮問題的求解,我們最後輸出的是迷宮的路徑,故符合佇列的先進先出特性,所以我們採用佇列的方式對迷宮進行求解 首先我們將建立乙個二維陣列 自定義初始化迷宮 7 7 int arr n n 二維陣列邊界用0填充,使之區域封閉,在實現過程 現陣列越界問題 接下來是 include include de...

問題 A 迷宮求解問題

時間限制 10 sec 記憶體限制 2048 mb 提交 574 解決 306 提交 狀態 討論版 用乙個m n的矩陣表示迷宮,0和1分別表示迷宮中的通路和障礙。設計乙個程式,對給定的迷宮,求出找到的第一條從入口到出口的通路,或得到沒有通路的結論。我們指定 1 迷宮的入口為矩陣的左上角 1,1 迷宮...

迷宮問題求解(1) 簡單迷宮

標頭檔案 include include include include include maze.h define max 100 typedef struct position datatype typedef struct stack stack void stackinit stack s ...