题目链接:
对于迷宫问题,bfs是比较好的选择。
直接bfs模板
#include#include #include using namespace std;char a[2001][2001];int fx[4] = { 1,0,-1,0};int fy[4] = { 0,1,0,-1};int n,m,sx,sy,ex,ey;struct point{ int x,y,t;}q[4000001];void dfs(){ int head = 1,tail = 2; q[head].x = sx, q[head].y = sy, q[head].t = 0; while(head != tail) { for(int i = 0; i < 4; i++) { int nowx = q[head].x+fx[i]; int nowy = q[head].y+fy[i]; if(nowx == ex && nowy == ey) { printf("%d",q[head].t+1); return ; } if(nowx > n || nowx <= 0 || nowy > m || nowy <= 0 || a[nowx][nowy] == '#') continue; a[nowx][nowy] = '#'; q[tail].x = nowx; q[tail].y = nowy; q[tail].t = q[head].t+1; tail++; } head++; } printf("No Way!");}int main(){ cin>>n>>m; for(int i = 1; i <= n; i++) for(int j = 1; j <= m; j++) { cin>>a[i][j]; if(a[i][j]=='d') { ex = i; ey = j; } if(a[i][j]=='m') { sx = i; sy = j; } } dfs(); return 0;}