LeetCode 1091. 二进制矩阵中的最短路径

在这里插入图片描述
在这里插入图片描述
思路:利用bfs,维护距离矩阵d,找到最短路径

class Solution {
private:const int inf=1e8;
typedef pair<int,int> P;
int d[100][100];
public:
    int shortestPathBinaryMatrix(vector<vector<int>>& grid) {
        if(grid[0][0]==1) return -1;//无起点,特判
        int n=grid.size();
    	for(int i=0;i<n;i++)
        	for(int j=0;j<n;j++)
           		d[i][j]=inf;
    	queue<P>q; q.push(P(0,0)); d[0][0]=1;
    	while(!q.empty()){
        	P p=q.front(); q.pop();
        	if(p.first==n-1&&p.second==n-1) break;
        	for(int dx=-1;dx<=1;dx++)
            	for(int dy=-1;dy<=1;dy++){
                	int nx=p.first+dx,ny=p.second+dy;
                	if(0<=nx&&nx<n&&0<=ny&&ny<n&&grid[nx][ny]==0&&d[nx][ny]==inf){
                    	q.push(P(nx,ny));
                    	d[nx][ny]=d[p.first][p.second]+1;
                	}
            	}
    	}
    	if(d[n-1][n-1]==inf) return -1;
    	else return d[n-1][n-1];
    }
};
发布了113 篇原创文章 · 获赞 57 · 访问量 1万+

猜你喜欢

转载自blog.csdn.net/weixin_44413191/article/details/104105016