迷宮最短路徑的C 實現(佇列 廣度優先)

2021-06-06 01:31:36 字數 968 閱讀 2432

#include#include#includeusing namespace std;

struct point;

int main()

cout}

} for(i = 0; i < col+2; ++i)

for(i = 1; i < row+1; ++i)

queueq;

point *start = (point*)malloc(sizeof(point));//起點

coutx>>start->y;

start->last = start;

q.push(start);

a[start->x][start->y] = 2;

point end;//終點

cout>end.y;

int aspect[4][2] = ,,,};//轉向:上下左右

int flag = 0;//是否有路可走的標誌

while(!q.empty())else if(lastpoint->x - front->x == -1)else if(lastpoint->y - front->y == 1)else

lastpoint = front;

front = front->last;

}//cout<"y] = -5;

break;

}else}}

} if(!flag)

cout<

9 80 0 1 0 0 0 1 0

0 0 1 0 0 0 0 0

0 0 0 0 1 1 1 0

0 1 1 1 0 0 1 0

0 0 0 1 0 0 0 0

0 1 0 0 0 1 0 1

0 1 1 1 1 0 0 1

1 1 0 0 0 0 0 1

0 0 0 0 0 0 0 0

執行結果:

迷宮的最短路徑

雖然在網上找不到題目,但這題實在是太經典了,好多搜尋題目都是從它變形來的 從s走到g,不能走 測試資料 10 10 s g include include includeusing namespace std const int inf 100000000 define max n 105 defi...

迷宮的最短路徑

迷宮的最短路徑 給定乙個大小為n m的迷宮。迷宮由通道和牆壁組成,每一步可以向鄰接的上下左右的通道移動。請求出從起點到終點所需的最小步數。注意,本題假設從起點一定可以到達終點。const inf 10000000 typedef pairp 狀態 輸入 cahr maze maxn maxm 1 i...

迷宮的最短路徑

挑戰程式設計競賽 第二版 c c 迷宮的最短路徑 給定乙個大小為 n m 的迷宮。迷宮由通道和牆壁組成,每一步可以向鄰接的上下左右四格的通道移動。請求出從起點到終點所需要的最小步數。請注意,本題假定從起點一定可以移動到終點。輸入 n 10,m 10 迷宮如下所示。s g 分別表示牆壁 通道 起點和終...