ACwing(基础)--- 走迷宫(bfs)

Posted bingers

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了ACwing(基础)--- 走迷宫(bfs)相关的知识,希望对你有一定的参考价值。

最短路模型

技术图片

#include<cstring>
#include<iostream>
#include<algorithm>

using namespace std;

typedef pair<int,int> PII;

const int N = 110;
int n,m;
int g[N][N];
int d[N][N];
PII q[N*N];//手写队列

int dfs() {
	int hh=0,tt=0;
	q[0]= {0,0};
	memset(d,-1,sizeof(d));//初始化-1为标记,没搜寻过
	d[0][0]=0;
	int dx[4]= {-1,0,1,0},dy[4]= {0,1,0,-1};//左右上下
	while(hh<=tt) {
		auto t=q[hh++];//t表示当前位置
		for(int i=0; i<4; i++) {
			int x=t.first+dx[i],y=t.second+dy[i];//(x、y)移动后的位置
			if(x>=0&&x<n&&y>=0&&y<m&&g[x][y]==0&&d[x][y]==-1) {
				d[x][y]=d[t.first][t.second]+1;//当前位置+1
				q[++tt]= {x,y};//进入队列用于下次查询
			}
		}
	}
	return d[n-1][m-1];
}
int main() {
	cin>>n>>m;
	for(int i=0; i<n; i++)
		for(int j=0; j<m; j++)
			cin>>g[i][j];

	cout<<dfs()<<endl;

	return 0;
}

以上是关于ACwing(基础)--- 走迷宫(bfs)的主要内容,如果未能解决你的问题,请参考以下文章

AcWing 844. 走迷宫(BFS or DP)

快来走迷宫

AcWing刷题蓝桥杯专题突破-广度优先搜索-bfs(11)

AcWing 844. 走迷宫

Acwing844.走迷宫

Acwing844.走迷宫