BFS
int [][]map=new int[m][n];
int dx={-1,0,0,1};
int dy={0,-1,1,0};
int [][]visited=new int [m][n];
int BFS(int x,int y)
{
queue<int []> Q=new LinkedList<>();
//将初始节点入队
Q.offer(new int{x,y});
while(!Q.empty())//只要队列Q不为空就遍历,
//这也是一开始将初始节点放入的原因
{
//取出队首元素
int []xy =Q.poll();
for(int i=0;i<4;i++)
{
xx=xy[0]+dx[i];
yy=xy[1]+dy[i];
if(xx>=m||xx<0||yy>=n||yy<0)//越界
continue;
if(visited[xx][yy]==1)
continue;
Q.offer(new int{xx,yy});//将子节点放入队列
visited[xx][yy]=1;//进行标记
}
}
}
本文详细介绍了如何使用广度优先搜索(BFS)算法在给定的二维数组map中,从初始坐标(x,y)出发,标记并遍历所有可达位置,确保不重复访问。
2266





