1. 程式人生 > >利用深度優先搜尋演算法和廣度優先搜尋演算法解迷宮問題

利用深度優先搜尋演算法和廣度優先搜尋演算法解迷宮問題

typedef struct{ int x; int y; int step; }pt; pt queue[25]; int front = 0, rear = 0; void bfs(void) { int i; int tx, ty; int flag = 0;  //flag判斷是否找到終點 queue[rear].x = 0;  //將出發點入隊 queue[rear].y = 0; queue[rear].step = 0; rear++; while (front < rear) {  //佇列中還有元素的話
for (i = 0; i < 4; i++) {  //遍歷四個方向 tx = queue[front].x + dir[i][0]; ty = queue[front].y + dir[i][1]; if (tx < 0 || tx>4 || ty < 0 || ty>4) continue; if (map[ty][tx] == 0 && mark[ty][tx] == 0) { mark[ty][tx]
= 1; queue[rear].x = tx; queue[rear].y = ty; queue[rear].step = queue[front].step + 1; rear++; } if (tx == 4 && ty == 4) { flag = 1; break; } }
if (flag == 1) break; front++; } printf("%d\n", queue[rear - 1].step); }