#includeusing namespace std;
const int m = 10, n = 10;
int mg[m+1][n+1]=,
, ,, ,
, ,, ,
}; const maxsize = 200;
struct
qu[maxsize];
int front=-1,rear=-1; /*隊首指標和隊尾指標*/
//(1)首先將(1,1)入隊;
//(2)在佇列qu不為空時迴圈:出隊一次(由於不是環形佇列,該出隊元素仍在佇列中),稱該出隊的方塊為當前方塊,front為該方塊在qu中的下標。
// ①如果當前方塊是出口,則輸出路徑並結束。
// ②否則,按順時針方向找出當前方塊的四個方位中可走的相鄰方塊(對應的mg陣列值為0),將這些可走的相鄰方塊均插入到佇列qu中,其pre設定為本搜尋路徑中上一方塊在qu中的下標值,也就是當前方塊的front值,並將相鄰方塊對應的mg陣列值置為-1,以避免回過來重複搜尋。
//(3)若隊列為空仍未找到出口,即不存在路徑。
void mgpath()
return;
}int dir = 0;
while (dir < 4)
if (mg[i][j] == 0)
++dir;
}}
cout << "err"; }
int main()
const maxsize = 100;
struct
stack[maxsize]; /*定義棧*/
int top=-1; /*初始化棧指標*/
void mgpath() /*路徑為:(1,1)->(m-2,n-2)*/
} printf("\n");
return;
find=0;
while (di<4 && find==0) /*找下乙個可走方塊*/
if (mg[i][j]==0) find=1;
} if (find==1) /*找到了下乙個可走方塊*/
else /*沒有路徑可走,則退棧*/
} printf("沒有可走路徑!\n");
}
棧和佇列迷宮問題
define n 6 int maze n n 通過乙個數字來創造乙個6 6的迷宮,其中 0代表牆,1代表能夠走的路。這裡將陣列通過畫圖軟體畫出來,這裡紅色的1代表迷宮的入口,綠色的 1代表迷宮的出口。這個陣列所建立的迷宮是相對複雜的一種迷宮,首先這個迷宮是存在環的 這幾個1,如果你的迷宮函式只是用...
棧和佇列的迷宮問題
maze.h pragma once include include define n 6 static int maze n n typedef struct pos pos void mazeprint int mazegetpath pos entry,pos exit int mazeche...
棧和遞迴 解決迷宮問題
走過的路設定為2,未走過的路設定0,牆設定為1 如下 bool checkpath const pos cur bool getmazepath pos entry pos next cur 上next.row 1 if checkpath next next cur 右next.col 1 if ...