求助一道题
  • 板块学术版
  • 楼主轮回·天照
  • 当前回复7
  • 已保存回复7
  • 发布时间2021/8/20 13:54
  • 上次更新2023/11/4 09:55:42
查看原帖
求助一道题
349592
轮回·天照楼主2021/8/20 13:54

T196188 隐身兰陵王

#include <bits/stdc++.h>
#define MAXN 1011
using namespace std;
struct node{
    int x,y,step;
}s;
int n,m;
int dir[4][2] = {{0,1},{0,-1},{1,0},{-1,0}};
int vis[MAXN][MAXN];
char maps[MAXN][MAXN];
void init(){
    for(int i = 1;i <= n;i++){
        for(int j = 1;j <= n;j++){
            if(maps[i][j] == '#'){
                if(maps[i+1][j+1] != '#')
                    maps[i+1][j+1] = '@';
                if(maps[i-1][j+1] != '#')
                    maps[i-1][j+1] = '@';
                if(maps[i][j+1] != '#')
                    maps[i][j+1] = '@';
                if(maps[i+1][j] != '#')
                    maps[i+1][j] = '@';
                if(maps[i-1][j] != '#')
                    maps[i-1][j] = '@';
                maps[i][j] = '@';
                if(maps[i+1][j-1] != '#')
                    maps[i+1][j-1] = '@';
                if(maps[i-1][j-1] != '#')
                    maps[i-1][j-1] = '@';
                if(maps[i][j-1] != '#')
                    maps[i][j-1] = '@';
            }
        }
    }
}
int bfs(){
    s.x = 1;
    s.y = 1;
    s.step = 0;
    vis[1][1] = 1;
    queue<node> que;
    que.push(s);
    while(!que.empty()){
        node now = que.front();
        que.pop();
        for(int i = 0;i < 4;i++){
            node next = now;
            next.x += dir[i][0];
            next.y += dir[i][1];
            next.step++;
            if(next.step > m)
                return -1;
            if(maps[next.x][next.y] == '@' || vis[next.x][next.y])
                continue;
            if(next.x == n && next.y == n)
                return next.step;
            vis[next.x][next.y] = 1;
            que.push(next);
        }
    }
    return -1;
}
int main(){
    cin >> n >> m;
    for(int i = 1;i <= n;i++)
        for(int j = 1;j <= n;j++)
            cin >> maps[i][j];
    init();
    cout << bfs();
    return 0;
}

为什么样例没有敌军的时候输出8,有敌军的时候就输出10?

2021/8/20 13:54
加载中...