這題有兩個解法。
先看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表示可以走的路,只能橫著走或豎著走,...