蓝桥杯 穿越雷区(bfs)
某坦克需要从A区到B区去(A,B区本身是安全区,没有正能量或负能量特征),怎样走才能路径最短?
已知的地图是一个方阵,上面用字母标出了A,B区,其它区都标了正号或负号分别表示正负能量辐射区。
例如:
A + - + -
- + - - +
- + + + -
+ - + - +
B + - + -
坦克车只能水平或垂直方向上移动到相邻的区。
接下来是n行,每行有n个数据,可能是A,B,+,-中的某一个,中间用空格分开。
A,B都只出现一次。
如果没有方案,则输出-1
5
A + - + -
- + - - +
- + + + -
+ - + - +
B + - + -
10
#include<iostream>
#include<queue> using namespace std; struct node
{
char ch; // 该坐标处的字符
int x, y; // 在地图上的坐标
int step; // 步数(层数)
}nod; char mp[][];
int vis[][];
int dx[] = {,-,,};
int dy[] = {,,,-};
int n;
int start_x, start_y;
int flag = ; void bfs(int x, int y)
{
vis[x][y] = ;
queue<node>Q;
nod.step = ;
nod.x = x;
nod.y = y;
nod.ch = 'A';
Q.push(nod); node t, p;
while(!Q.empty())
{
t = Q.front();
Q.pop(); if(t.ch == 'B')
{
flag = ;
cout << t.step << endl;
return;
} for(int i = ; i < ; ++i)
{
int xx = t.x + dx[i];
int yy = t.y + dy[i]; if(xx >= && yy >= && xx < n && yy < n && !vis[xx][yy] && mp[xx][yy] != t.ch) // 这一层的字符不能和前一层的一样,否则坦克会报废
{
p.ch = mp[xx][yy];
p.x = xx;
p.y = yy;
p.step = t.step + ;
Q.push(p);
}
} } cout << - << endl; // 队列已经空了仍然没有找到方案,则输出-1 } int main()
{
cin >> n;
for(int i = ; i < n; ++i)
for(int j = ; j < n; ++j)
{
cin >> mp[i][j];
if(mp[i][j] == 'A')
{
start_x = i;
start_y = j;
}
} bfs(start_x, start_y); return ;
}
蓝桥杯 穿越雷区(bfs)的更多相关文章
- java实现第六届蓝桥杯穿越雷区
穿越雷区 题目描述 X星的坦克战车很奇怪,它必须交替地穿越正能量辐射区和负能量辐射区才能保持正常运转,否则将报废. 某坦克需要从A区到B区去(A,B区本身是安全区,没有正能量或负能量特征),怎样走才能 ...
- 蓝桥杯 卡片换位(bfs)
卡片换位 你玩过华容道的游戏吗?这是个类似的,但更简单的游戏.看下面 3 x 2 的格子 在其中放5张牌,其中A代表关羽,B代表张飞,* 代表士兵.还有一个格子是空着的. 你可以把一张牌移动到相邻的空 ...
- 蓝桥杯 调手表(bfs解法)
小明买了块高端大气上档次的电子手表,他正准备调时间呢. 在 M78 星云,时间的计量单位和地球上不同,M78 星云的一个小时有 n 分钟. 大家都知道,手表只有一个按钮可以把当前的数加一.在调分钟的时 ...
- 蓝桥杯比赛关于 BFS 算法总结方法以及套路分析
首先我们来看几道java A组的题目,都是同一年的哦!!! 搭积木 小明最近喜欢搭数字积木,一共有10块积木,每个积木上有一个数字,0~9. 搭积木规则:每个积木放到其它两个积木的上面,并且一定比下面 ...
- 蓝桥杯---剪格子(DFS&BFS)(小总结)
问题描述 如下图所示,3 x 3 的格子中填写了一些整数. +--*--+--+ |10* 1|52| +--****--+ |20|30* 1| *******--+ | 1| 2| 3| +--+ ...
- 蓝桥杯 历届试题 九宫重排 (bfs+康托展开去重优化)
Description 如下面第一个图的九宫格中,放着 1~8 的数字卡片,还有一个格子空着.与空格子相邻的格子中的卡片可以移动到空格中.经过若干次移动,可以形成第二个图所示的局面. 我们把第一个图的 ...
- 算法笔记_208:第六届蓝桥杯软件类决赛真题(Java语言A组)
目录 1 胡同门牌号 2 四阶幻方 3 显示二叉树 4 穿越雷区 5 切开字符串 6 铺瓷砖 前言:以下代码仅供参考,若有错误欢迎指正哦~ 1 胡同门牌号 标题:胡同门牌号 小明家住在一条胡同里. ...
- 2015年第六届蓝桥杯国赛试题(JavaA组)
1.结果填空 (满分15分)2.结果填空 (满分35分)3.代码填空 (满分31分)4.程序设计(满分41分)5.程序设计(满分75分)6.程序设计(满分103分) 1.标题:胡同门牌号 小明家住在一 ...
- 第六届蓝桥杯JavaB组国(决)赛真题
解题代码部分来自网友,如果有不对的地方,欢迎各位大佬评论 题目1.分机号 X老板脾气古怪,他们公司的电话分机号都是3位数,老板规定,所有号码必须是降序排列,且不能有重复的数位.比如: 751,520, ...
随机推荐
- 010-2 Socket套接字类型
ocket套接字类型 成员名称 说明 Dgram 支持数据报,即为固定 (通常很小) 的最大长度的无连接的. 不可靠的消息. 消息可能会丢失或重复,并且可能不按顺序抵达. 一个 Socket 类型的 ...
- Mathematica 代码
s1 = ContourPlot3D[x^2 + z^2 == 1, {x, -1, 1}, {y, 0, 1}, {z, -1, 1}] s2 = ContourPlot3D[ y == 1 + S ...
- iOS应用架构开篇
iOS应用架构谈开篇 iOS应用架构谈 view层的组织和调用方案 iOS应用架构谈 网络层设计方案 iOS应用架构谈 动态部署方案 iOS应用架构谈 本地持久化方案 缘由 之前安居客iOS a ...
- Linux 定时运行设置
脚本设置位置: /etc/cron.d SHELL=/bin/bash PATH=/sbin:/bin:/usr/sbin:/usr/bin MAILTO=root # 每个小时的01分钟执行这个脚本 ...
- mongodb增加新字段报错解决方法
今天想在项目的一个集合里增加一个新字段 db.article.update({},{$set:{status:0}},{multi:true}) multi : 可选,mongodb 默认是false ...
- request redirection
# encoding:utf-8 import reimport jsonimport randomfrom esdapi.config import BASE_URLfrom requests.se ...
- js关于“call方法”百度,阿里超难面试题
面试题:function fn(a,b){ console.log(this); console.log(a); console.log(a+b);}fn.call(1);fn.ca ...
- -source 1.5 中不支持泛型(请使用-source5或更高版本)
Idea中maven--compile时报错 -source 1.5 中不支持泛型(请使用-source5或更高版本) 解决办法 在项目的pom.xml中,添加 <build> & ...
- webpack配置less
webpack4.0把webpack.config.js隐藏起来了,需要先暴露出来,在webpack修改配置
- LOJ #6485 LJJ 学二项式定理
QwQ LOJ #6485 题意 求题面中那个算式 题解 墙上暴利 设$ f(x)=(sx+1)^n$ 假设求出了生成函数$ f$的各项系数显然可以算出答案 因为模$ 4$的缘故只要对于每个余数算出次 ...