迷宮路徑演算法實現

2021-08-20 10:22:51 字數 1484 閱讀 2306

#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 ...