文章
9
粉丝
0
获赞
39
访问
972
思路:二维数组 maze 存储地图, vis 存储是否访问过。
bfs,和层序遍历一样,用队列实现。
先将起点入队,标记,然后遍历起点的四个方向,若有 可以移动的方向,则入队,不停循环。
// 1019
#include <bits/stdc++.h>
using namespace std;
#define maxn 105
int dir[4][2] = {1,0,0,1,-1,0,0,-1}; // 右 下 左 上
char maze[maxn][maxn]; // 起始位从 1 开始,则 0行 0列都是空值
int vis[maxn][maxn];
void init(){
memset(maze, 0, sizeof(maze));
memset(vis, 0, sizeof(vis));
}
typedef struct Node{
int x,y;
int step;
} Node;
int bfs(int sx, int sy){
queue<Node> q;
int ans = -1;
Node start = {sx,sy, 0}; // 起点加入队列
q.push(start);
vis[sx][sy] = 1; // 标记为已访问
while(!q.empty()){
Node cur = q.front();
q.pop();
&n...
登录后发布评论
暂无评论,来抢沙发