poj3984迷宮問題

2021-09-13 09:25:19 字數 1366 閱讀 7271

這題有兩個解法。

先看dfs,其實這個題用了一點技巧,認為向右向下即為最小路徑。

所以其實就是簡單的dfs再用向量儲存一下路徑

幾個注意點:

1.定義char mp作為地圖的話,判斷的時候用『1』不要用1啊。這個真的無語

2.開陣列範圍(由於我喜歡從1-n記錄,所以陣列要開大乙個

3.毒瘤輸入

見**

for(int i=1;i<=5;i++)

for(int j=1;j<=5;j++)

以下為ac**

#include#include#includeusing namespace std;

#includeconst int maxn=6;//erwei 40 yiwei 80

int w,h,fx,fy,ans;

char mp[maxn][maxn];

int flag[maxn][maxn];

int dir[4][2]=;

struct node

};vectorpath;

bool pd(int x,int y)

int dfs(int x,int y)

for(int e=0;e<4;e++)

}return 0;

}int main()

//cin>>mp[i]+1;

dfs(1,1);

for(int i=0;!path.empty();i++)

}

這題bfs是正解。一般來說bfs做最短路徑。dfs需要通過比較每一次路徑的長短來的姐,但是bfs是每一層逐漸向目的點走,所以先到的一定是最短的,所以直接就可以得到正確答案。由於這個題太簡單了(而且很容易投機取巧,就不寫這題的**了)放個模板吧

#include//(10.16)

#include#includeusing namespace std;

struct node

;};const int edge=5;/*幾階矩陣*/

int fx=0,fy=0;/*起點座標*/

int ex=4,ey=4;/*終點座標*/

int arc[edge][edge];

int dis[edge][edge];

node path[edge][edge];

int dir[4][2]=;

bool pd(int x,int y)

void bfs()

}    }

}void coutpath(node cur)

bfs();

coutpath(node(ex,ey));

cout<}

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表示可以走的路,只能橫著走或豎著走,...