月色美兮 2022-03-26 00:06 采纳率: 100%
浏览 46
已结题

蓝桥杯真题 大胖子走迷宫 代码纠错

img

img

我的代码就是跑不出来,找不到哪里错了,逻辑上没有错误


#include<bits/stdc++.h>
using namespace std;
const int N = 1001;

int w;//小明体积
int dx[4] = {10-10};
int dy[4] = {010-1};
int n, k;
char mp[N][N];//存储地图 *障碍 +空地
bool vis[N][N];
struct Node {
    int x;
    int y;
    int t;
};

bool check(int xx, int yy) //判断是否有障碍或者出界

    for (int i = xx - w / 2; i <= xx + w / 2; i++) {
        for (int j = yy - w / 2; j <= yy + w / 2; j++) {
            if (mp[i][j] == '*'return false;
        }
    }
    
    //越界
    if (xx + w / 2 > n || xx - w / 2 < 1 || yy + w / 2 > n || yy - w / 2 < 1return false;
    return true;
}


void bfs() {

    queue<Node>q;
    q.push({330}); //(3,3)起点入队
    vis[3][3] = 1;


    while (!q.empty()) {
        Node s = q.front();
        q.pop();

        if (s.x == n - 2 && s.y == n - 2) { //到达终点
            cout << s.t;
            return;
        }

        //小明体积判断
        if (s.t < k) w = 5;
        else if (s.t >= k && s.t < 2 * k) w = 3;
        else if (s.t >= 2 * k) w = 1;


        if (w != 1) q.push({s.x, s.y, s.t + 1}); //原地不动

        for (int i = 0; i < 4; i++) {
            int fx = s.x + dx[i], fy = s.y + dy[i];

            if (!vis[fx][fy] && check(fx, fy) ) {
                vis[fx][fx] = 1;
                //cout<<fx<<" "<<fy<<endl;
                q.push({fx, fy, s.t + 1}); //新点入队

            }

        }
    }
}

int main() {

    cin >> n >> k;

    for (int i = 1; i <= n; i++) {
        for (int j = 1; j <= n; j++) {
            cin >> mp[i][j];
        }
    }

    bfs();

    return 0;
} 
  • 写回答

2条回答 默认 最新

  • 魔法自动机 2022-03-26 11:46
    关注

    check里面使用mp[i][j]应该先判断i和j是否在[1,n]的范围内,要是访问越界会报错。

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

问题事件

  • 系统已结题 4月5日
  • 已采纳回答 3月28日
  • 创建了问题 3月26日

悬赏问题

  • ¥15 系统 24h2 专业工作站版,浏览文件夹的图库,视频,图片之类的怎样删除?
  • ¥15 怎么把512还原为520格式
  • ¥15 MATLAB的动态模态分解出现错误,以CFX非定常模拟结果为快照
  • ¥15 求高通平台Softsim调试经验
  • ¥15 canal如何实现将mysql多张表(月表)采集入库到目标表中(一张表)?
  • ¥15 wpf ScrollViewer实现冻结左侧宽度w范围内的视图
  • ¥15 栅极驱动低侧烧毁MOSFET
  • ¥30 写segy数据时出错3
  • ¥100 linux下qt运行QCefView demo报错
  • ¥50 F1C100S下的红外解码IR_RX驱动问题