最近正在學習bfs和dfs,這是acm很重要也很常用的乙個專題,不知道其他acmer怎麼想,也可能是我是個大水,才剛開始學沒多久,做過的題目很少,我覺得深搜和寬搜很難,需要邏輯非常清楚,而且dfs往往還要各種剪枝,so……我還得多做題多見見題型
下面來說這道題,題目意思很明確,迷宮是乙個5x5的二維陣列,現在要求從左上角到右下角找一條最短路線並輸出路線
思路:因為要求輸出路線,所以不能用stl中的queue,而是要自己寫乙個,先將起始位置入佇列
每次從佇列拿出乙個元素,擴充套件其相鄰的4個元素入佇列(要判重),
直到隊頭元素為終點為止。佇列裡的元素記錄了指向父節點(上一步)的指標
**如下
#include#includeusing namespace std;
int map[5][5];
int dx[4]=;
int dy[4]=;
int front=0,rear=1;
struct nodeq[100];
void print(int i)
if(a==4&&b==4) print(front);
} front++;//出隊 }}
int main()
{ int i,j;
for(i=0;i<5;i++)
for(j=0;j<5;j++)
cin>>map[i][j];
cout<<"(0, 0)"<
POJ3984 迷宮問題
題目 迷宮問題 time limit 1000ms memory limit 65536k total submissions 3183 accepted 1861 description 定義乙個二維陣列 int maze 5 5 它表示乙個迷宮,其中的1表示牆壁,0表示可以走的路,只能橫著走或豎...
POJ 3984 迷宮問題
一道比較簡單的bfs題 include include include include define max 6 using namespace std int map max max px max max py max max int movex 4 movey 4 bool vis max ma...
POJ 3984 迷宮問題
迷宮問題 time limit 1000ms memory limit 65536k total submissions 7047 accepted 4123 description 定義乙個二維陣列 int maze 5 5 它表示乙個迷宮,其中的1表示牆壁,0表示可以走的路,只能橫著走或豎著走,...