文章

19

粉丝

0

获赞

148

访问

4.9k

头像
迷宫 题解:简单说两个问题
P1563 天津大学/南开大学机试题
发布于2025年3月19日 12:36
阅读数 212

代码看不懂的做一下取舍,可以直接扔给deepseek让他给你讲,不懂的继续提问就可以。

首先要注意,你运用了方向向量int dir[4][2] = {0,1,0,-1,-1,0,1,0};就一定要注意边界问题,地图输入时应该从1开始,不然你的方向向量向四周进行bfs的时候会有数组越界的问题出现!

其次要注意与或非,我记得&&的优先级高于 || 所以if判断中要注意加括号。

这个题里面变量命名比较多,要注意直观,别把自己绕进去了。

代码:

#include<bits/stdc++.h>
using namespace std;
char mp[105][105];
bool vis[105][105];
int dir[4][2] = {0,1,0,-1,-1,0,1,0};
typedef struct Node{
    int x,y;
    int step;
}node;
int bfs(int xs,int ys){
    memset(vis,0,sizeof(vis));
    queue<node> q;
    int ans = -1;
    q.push({xs,ys,0});//起点入队
    vis[xs][ys] = 1;// 起点标记
    while(!q.empty()){
        node now = q.front();
        q.pop();
        if(mp[now.x][now.y] == 'E'){//找到出口
         ans = now.step;
 &nbs...

登录查看完整内容


登录后发布评论

暂无评论,来抢沙发