问题 1825: [蓝桥杯][2015年第六届真题]穿越雷区

时间限制: 1Sec 内存限制: 128MB 提交: 310 解决: 211

题目描述

X星的坦克战车很奇怪,它必须交替地穿越正能量辐射区和负能量辐射区才能保持正常运转,否则将报废。
某坦克需要从A区到B区去(A,B区本身是安全区,没有正能量或负能量特征),怎样走才能路径最短?

已知的地图是一个方阵,上面用字母标出了A,B区,其它区都标了正号或负号分别表示正负能量辐射区。
例如:
A + - + -
- + - - +
- + + + -
+ - + - +
B + - + -

坦克车只能水平或垂直方向上移动到相邻的区。

输入

输入第一行是一个整数n,表示方阵的大小, 4<=n<100
接下来是n行,每行有n个数据,可能是A,B,+,-中的某一个,中间用空格分开。
A,B都只出现一次。

输出

要求输出一个整数,表示坦克从A区到B区的最少移动步数。
如果没有方案,则输出-1

样例输入

5
A + - + -
- + - - +
- + + + -
+ - + - +
B + - + -

样例输出

10
#include <iostream>
#include <queue>
using namespace std;
struct node{int x;int y;int step;int status;        //+为1,负为-1,正常为0 node(int x, int y, int step = 0, int status = 0): x(x), y(y), step(step), status(status) {}
};
char mp[105][105];
bool vis[105][105];            //记录该点是否已经访问过
int n, sx, sy;
const int dir[4][2] = {{0, 1}, {0, -1}, {1, 0}, {-1, 0}};//方向数组
bool in(int x, int y){    //判断当前坐标是否超界return x >= 0 && x < n && y >= 0 && y < n;
}
int bfs(node n){queue<node>q;q.push(n);while(!q.empty()){node now = q.front();q.pop();if(mp[now.x][now.y] == 'B'){return now.step;}for(int i = 0; i < 4; i++){        //以当前点为基准,以四个方向进行试探node next = now;next.x += dir[i][0];next.y += dir[i][1];if(!vis[next.x][next.y] && in(next.x, next.y)){if((mp[next.x][next.y] == '+' && next.status != 1) || (mp[next.x][next.y] == '-' && next.status != -1) || mp[next.x][next.y] == 'B'){//根据题目要求进行判断vis[next.x][next.y] = true;//标记该点已经访问过next.step++;            //步数记得+1if(mp[next.x][next.y] == '+'){//修改状态next.status = 1;}if(mp[next.x][next.y] == '-'){//修改状态next.status = -1;}q.push(next);        //入队列}}}}return -1;
}
int main(){cin >> n;for(int i = 0; i < n; i++){for(int j = 0; j < n; j++){cin >> mp[i][j];if(mp[i][j] == 'A'){sx = i;sy = j;}}}node n(sx, sy);vis[sx][sy] = true;cout << bfs(n) << endl;return 0;
}

问题 1825: [蓝桥杯][2015年第六届真题]穿越雷区相关推荐

  1. [蓝桥杯][2015年第六届真题]穿越雷区

    文章目录 题目描述 输入 输出 样例输入 样例输出 c语言AC代码 题目描述 X星的坦克战车很奇怪,它必须交替地穿越正能量辐射区和负能量辐射区才能保持正常运转,否则将报废. 某坦克需要从A区到B区去( ...

  2. 蓝桥杯2015年第六届真题-穿越雷区

    题目 题目链接 题解 BFS模板题. 就在模板题的基础上稍微加了点限制而已. 我用的是pair存的,first表示位置,将二维压缩成一维了:second表示步数: 要求正负交替,我就采用异或的思想进行 ...

  3. 蓝桥杯2015年第六届真题——穿越雷区(C/C++)

    穿越雷区 一.题目内容 题目描述 X星的坦克战车很奇怪,它必须交替地穿越正能量辐射区和负能量辐射区才能保持正常运转,否则将报废.某坦克需要从A区到B区去(A,B区本身是安全区,没有正能量或负能量特征) ...

  4. [蓝桥杯][2015年第六届真题]生命之树(树形dp)

    题目描述 在X森林里,上帝创建了生命之树. 他给每棵树的每个节点(叶子也称为一个节点)上,都标了一个整数,代表这个点的和谐值. 上帝要在这棵树内选出一个非空节点集S,使得对于S中的任意两个点a,b,都 ...

  5. [蓝桥杯][2015年第六届真题]密文搜索(排序+二分)

    题目描述 福尔摩斯从X星收到一份资料,全部是小写字母组成. 他的助手提供了另一份资料:许多长度为8的密码列表. 福尔摩斯发现,这些密码是被打乱后隐藏在先前那份资料中的. 请你编写一个程序,从第一份资料 ...

  6. [蓝桥杯][2015年第六届真题]机器人塔(DFS)

    题目描述 X星球的机器人表演拉拉队有两种服装,A和B. 他们这次表演的是搭机器人塔. 类似: A B B A B A A A B B B B B A B A B A B B A 队内的组塔规则是: A ...

  7. [蓝桥杯][2015年第六届真题]表格计算(递归+记忆化)

    题目描述 某次无聊中, atm 发现了一个很老的程序.这个程序的功能类似于 Excel ,它对一个表格进行操作. 不妨设表格有 n 行,每行有 m 个格子. 每个格子的内容可以是一个正整数,也可以是一 ...

  8. 蓝桥杯2015年第六届C/C++ B组省赛习题题解

    目录 第一题:奖券数目 第二题:星系炸弹(日期计算) 第三题:三羊献瑞(全排列) 第四题:格子中输出 第五题:九数组分数(dfs) 第六题:加法变乘法(枚举) 第七题:牌型种数(dfs+dp) 第八题 ...

  9. [蓝桥杯][2019年第十届真题]扫地机器人(二分+贪心)

    题目描述 小明公司的办公区有一条长长的走廊,由 N 个方格区域组成,如下图所 示. 走廊内部署了 K 台扫地机器人,其中第 i 台在第 Ai 个方格区域中. 已知扫地机器人每分钟可以移动到左右相邻的方 ...

最新文章

  1. 第25章 Pytorch 如何高效使用GPU
  2. 矿用巷道巡检机器人_一种井下自动巡检机器人系统
  3. map和vector的迭代器失效问题(某公司招聘笔试试题)
  4. 转载:如何快速转载CSDN及博客园中的博客
  5. 转 无障碍阅读 role aria-*
  6. 悲剧!他写了20000行代码,却连6岁孩子都比不过!
  7. OPNET网络仿真分析-1.1.2、OPNET简介
  8. 百度谭中意:我和开源20年
  9. CodeJock 实现MFC换肤
  10. 话单分析账单分析行踪分析三合一数据分析
  11. Ubuntu16.04拨号上网
  12. JAVA EE Apache Zookeeper / Google Chubby
  13. 哈工大软件构造2022笔记(持续更新----1)
  14. syn c 语言程序,C语言实现SYN Flood
  15. 2022-02-14 influxdb集群coordinator启动及请求处理流程解析
  16. 并发编程 Java 三把锁(Synchronized、ReentrantLock、ReadWriteLock)
  17. Linux编程基础:1~6章实训编程题
  18. 右下角弹出广告怎么关
  19. 黑帽SEO是什么?黑帽SEO能做吗
  20. 2019年秋计算机管理工作总结,2019年秋季学期工作总结

热门文章

  1. Javaweb (MVC购物车01)
  2. C#中动态类型dynamic用法浅析
  3. aspen吸收塔是哪个_Aspen吸收塔的设计
  4. 【GPT4】微软 GPT-4 测试报告(4)GPT4 的数学能力
  5. 申请专利需要什么流程?
  6. 减数游戏(优先队列+普通队列)
  7. 跨域问题常用的三种解决方式
  8. python数据清洗与准备:缺失值、重复值、异常值处理
  9. 802.3帧前导码小结
  10. 我的创作纪念日-Jiawen9