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

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

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 一个识别内容的自动化脚本程序
  • ¥15 anaconda虚拟python环境部署langchain-chatchat报错
  • ¥20 matlab有约束条件下的多元函数求最小值
  • ¥50 如何隐藏网页弹出框的url地址栏
  • ¥20 metropolis算法模拟二维ising模型来计算磁化强度,fortran
  • ¥15 uniapp-typescript-vue报错
  • ¥15 oracle强制关机以后报错01033
  • ¥15 给Chat with RTX添加语言模型时遇到问题
  • ¥15 oracle修复,怎么根据日志修复呀?
  • ¥15 使用Stable Diffusion时出现错误