蓝桥杯历届-穿越雷区


标题:穿越雷区

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


典型的dfs思路即可,数据不是太大,可以过!


#include<cstdio>
#include<algorithm>
#include<iostream>
using namespace std;
const int MAX_N = 101;
char s[MAX_N][MAX_N];
int book[MAX_N][MAX_N];
int N, startX, startY, endX, endY;
int MIN1 = 99999;
bool f;
int C = 0;
int next[4][2] = {{0, 1},{1, 0},{0, -1},{-1, 0}
};
int getX(char c) {for (int i = 0; i< N; i++) {for (int j = 0; j < N; j++) {if (s[i][j] == c) return i;}}
}
int getY(char c) {for (int i = 0; i< N; i++) {for (int j = 0; j < N; j++) {if (s[i][j] == c) return j;}}
}
void dfs(int x, int y, int step) {// 四种走法 上下左右 for (int i = 0; i < 4; i++) {int tx = x + next[i][0];int ty = y + next[i][1];// 判断是否越界 if (tx < 0 || tx > N || ty < 0 || ty > N) continue;// 判断交替 if (s[x][y] == '+') f = true;else if (s[x][y] == '-') f =  false;if (tx == endX && ty == endY) {// 更新最小值if (step < MIN1) MIN1 = step;return; //返回 }// 判断是否是障碍物或者已经走过 if (f && C > 0) {if (book[tx][ty] == 0 && s[tx][ty] == '-') {C++;book[tx][ty] = 1;dfs(tx, ty, step+1);book[tx][ty] = 0;}} else if(!f && C > 0){if (book[tx][ty] == 0 && s[tx][ty] == '+') {C++;book[tx][ty] = 1;dfs(tx, ty, step+1);book[tx][ty] = 0;}} else {if (book[tx][ty] == 0) {C++;book[tx][ty] = 1;dfs(tx, ty, step+1);book[tx][ty] = 0;}}}
}
int main() {freopen("in.txt", "r", stdin);scanf("%d", &N);getchar();for (int i = 0; i< N; i++) {for (int j = 0; j < N; j++) {scanf("%c", &s[i][j]);getchar();}}for (int i = 0; i < N; i++) {for (int j = 0; j < N; j++) book[i][j] = 0;}startX = getX('A');startY = getY('A');endX = getX('B');endY = getY('B');book[startX][startY] = 1;dfs(startX, startY, 1);if (MIN1 == 99999) MIN1 = -1;cout << MIN1 << endl;return 0;
}

蓝桥杯历届-穿越雷区相关推荐

  1. 蓝桥杯之穿越雷区 BFS

    本题为2015年第六届蓝桥杯C语言A组试题,第4题. 考点:广度优先搜索(BFS) 广搜一般用来解决"最短""最少"问题,需用到队列. 题目描述 标题:穿越雷区 ...

  2. 标题 穿越雷区 java_【蓝桥杯】穿越雷区-java语言描述

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

  3. 蓝桥杯:穿越雷区——DFS

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

  4. 蓝桥杯_穿越雷区 java

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

  5. [蓝桥杯][历届试题]国王的烦恼(反向+并查集)

    问题 1435: [蓝桥杯][历届试题]国王的烦恼 时间限制: 1Sec 内存限制: 128MB 提交: 802 解决: 213 题目描述 C国由n个小岛组成,为了方便小岛之间联络,C国在小岛间建立了 ...

  6. 蓝桥杯 - 历届试题 - 日期问题

    版权声明:本文为博主原创文章,未经博主允许不得转载. https://blog.csdn.net/qq_33531813/article/details/79516258 </div>&l ...

  7. 蓝桥杯历届试题 地宫取宝 dp or 记忆化搜索

    问题描述 X 国王有一个地宫宝库.是 n x m 个格子的矩阵.每个格子放一件宝贝.每个宝贝贴着价值标签. 地宫的入口在左上角,出口在右下角. 小明被带到地宫的入口,国王要求他只能向右或向下行走. 走 ...

  8. 二分搜索,POJ2456,NYOJ 914, 区间移位-蓝桥杯-历届试题

    二分搜索是不断缩减可能解的范围来得到最优解, 因为每次是折半, 所以指数爆炸有多快,这个效率就有多高 POJ2456为例, 传送门 简而言之, 就是将牛之间的距离的最小值最大化. #include&l ...

  9. 蓝桥杯历届试题代码参考

    蓝桥杯历届试题代码参考 历届试题 核桃的数量 打印十字图 带分数 剪格子 错误票据 翻硬币 连号区间数 买不到的数目 大臣的旅费 幸运数 横向打印二叉树 危险系数 网络寻路 高僧斗法 格子刷油漆 农场 ...

最新文章

  1. js中的preventDefault与stopPropagation详解
  2. php 图片预览原理,JavaScript_纯JS实现的批量图片预览加载功能,1.实现原理直接见代码,需要一 - phpStudy...
  3. phpstudy composer 安装YII2
  4. 【转】C# 操作系统防火墙
  5. pandas的dataframe节省内存
  6. Python 装饰器详解(上)
  7. 无人出价!贾跃亭所持2210万股乐视网股票首次拍卖流拍
  8. 【MyEcplise SVN】myEcplise上安装SVN的多种方式
  9. 2019春年第三次课程设计实验报告
  10. 10.1寸大屏安卓通用车载导航
  11. 关于PLC的输入输出点,源型漏型的判断
  12. 你说南京很好,但不是你最想去的城市,那么,上海呢,要不借这个机会去看看吧--写给自己
  13. java大作业网络聊天室
  14. 3d max 安装及激活教程
  15. win10轻松自动“备份和恢复”只要5步
  16. 打字慢能学计算机吗,提高电脑打字速度,实现快速盲打,这样的学习方法很管用!...
  17. python计算圆柱体积_如何用PYTHON计算体积公式
  18. CSS样式之块元素行内元素
  19. 大话西游2人数最多服务器,大话西游2四下服务器首只双终极黄金问世!修炼之路令人揪心...
  20. 推荐15款很棒的 JavaScript 开发工具

热门文章

  1. c# StreamReader readtoend为空
  2. 第二节:文本数据预处理
  3. 如何实现Oracle先组内排序然后再组外排序
  4. Oracle变量定义的方法
  5. vim中替换与查找命令
  6. 数据透视之——李白诗集
  7. c语言中bool的使用
  8. 移轴镜头摄影计算机作业模板,我来告诉你——后期做出移轴镜头拍摄的效果!...
  9. 全志T507屏幕切换的两种方式
  10. printf 格式化输出符号详细说明