文章
3
粉丝
405
获赞
1
访问
28.8k
#include<iostream>
#include<vector>
#include<queue>
#include<cstdio>
using namespace std;
int hang[4]={-1,1,0,0}; //上下左右四个方向
int lie[4]={0,0,-1,1};
int bfs(vector<vector<char> >&G,vector<vector<bool> >&vis,int x,int y,int h,int w){
queue<pair<int,int> > q;
q.push(make_pair(x,y));
int res=0;
while(q.size()!=0){
res++;
int N=q.size();
while(N--){
pair<int,int> p=q.front();
q.pop();
int m=p.first;
int n=p.second;
for(int i=0;i<4;i++){
int new_x=m+hang[i];
int new_y=n+lie[i];
if(new_x>=0 && new_x<h && new_y>=0 && new_y<w && G[new_x][new_y]=='*' && vis[new_x][new_y]==false ){
q.push(make_pair(new_x,new_y));
vis[new_x][new_y]=true;//记得更新状态
}else if(new_x>=0 && new_x<h && new_y>=0 && new_y<w && G[new_x][new_y]=='E'){
return res;
}
...
登录后发布评论
暂无评论,来抢沙发