利用深度優先搜尋演算法和廣度優先搜尋演算法解迷宮問題
阿新 • • 發佈:2019-02-14
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);
}