#include
#include
#include
#include
#define stack_init_size 1000
#define stackincrement 10
#define ok 1
#define overflow 0
#define error 0
//typedef int selemtype;
typedef struct selemtype;
typedef structsqstack;
int initstack(sqstack &s)
void push(sqstack &s,selemtype &e)
*s.top++=e;
}selemtype pop(sqstack &s,selemtype &e)
selemtype gettop(sqstack s,selemtype &e)
int stackempty(sqstack &s)
int main()
,,,,,,,};
//用結構體表示位置
struct position
;//用於記錄和輸出迷宮探路中相關符號,包括1 .
char maze[20][20];
//用棧來儲存探路過程中的資料
int i,x,y,ok;
selemtype p;
//二維陣列的第0行、第m+1行、第0列、第m+1列元素全
//置成「1」,表示迷宮的邊界;第1行第1列元素和第m行第m列
//元素置成「0」,表示迷宮的入口和出口;其餘元素值用隨機
//函式產生。
srand(time(0));
for(x=1;x<=m;x++)
for(y=1;y<=m;y++)
maze[x][y]=48+rand()%2;
maze[1][1]='0';maze[m][m]='0';
for(x=0;x<=m+1;x++)
for(y=0;y<=m+1;y++)
p.x=1;p.y=1;
push(s,p);
maze[1][1]='.';
printf("迷宮初始為(m*m)\n");
for(x=1;x<=m;x++)
printf("\n");
//開始探路
doi++;
}if(i==8)
}while((!stackempty(s))&&((p.x!=m)||(p.y!=m)));
//輸出探路結果
if(stackempty(s)) printf("沒有路徑\n");
else printf("有路徑\n");
//輸出探路迷宮留下的蹤跡
for(x=1;x<=m;x++)
printf("\n");
system("pause");
}
迷宮演算法( 實現)
迷宮演算法 實現 對於走迷宮,人們提出過很多計算機上的解法。深度優先搜尋 廣度優先搜尋是使用最廣的方法。生活中,人們更願意使用 緊貼牆壁,靠右行走 的簡單規則。下面的 則採用了另一種不同的解法。它把走迷宮的過程比做 染色過程 假設入口點被染為紅色,它的顏色會 傳染 給與它相鄰的可走的單元。這個過程不...
迷宮演算法c 實現
迷宮演算法是乙個比較簡單的演算法,是在迷宮裡如何通過從入口找到出口,總的思路來是 每一條路都是由兩面呢牆壁組成,並且是每一面是連續的,只要我們從入口延著乙個牆壁一直走,例如一直沿著右手邊的牆壁來走,就一定可以找到出口,即便是乙個死胡同,沿著牆壁也可以繞出來。t 上圖可以看成乙個簡易的迷宮,代表牆,空...
棧實現迷宮演算法
棧實現迷宮回溯演算法 實現 include using namespace std include include define n 10 矩陣最大行列數 template class mazestack 迷宮將要用到的棧 mazestack void push t x this ptr size ...