标题 穿越雷区 java_6届国赛java试题 4: 穿越雷区
穿越雷区(BFS)
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
思路:
这到题和迷宫题很像只是添加队列的添加不一样而已。我们先找到出发点A然后把他添加到队列中,反向我用的是f=[[1,0],[-1,0],[0,1],[0,-1]]来表示的,我们添加到队列中条件:
上层的是+时这次就要走-;
上层的是-时这次就要走+;
就有点像移动的墙一样,然后一直广搜就可以知道最近的步数了。
程序:
n=int(input())
m=[input().replace(" ","") for i in range(n)]
c=[[-1 for i1 in range(n)] for i in range(n)]
d=[]
f=[[1,0],[-1,0],[0,1],[0,-1]]
def bfs():
while d!=[]:
x,y=d.pop(0)
for i in f:
x1=x+i[0]
y1=y+i[1]
if -1
if m[x1][y1]=="B":
c[x1][y1]=c[x][y]+1
return c[x1][y1]
if (m[x][y]=="-" and m[x1][y1]=="+" )or (m[x][y]=="+" and m[x1][y1]=="-") or m[x][y]=="A":
d.append([x1,y1])
c[x1][y1]=c[x][y]+1
for i in range(n):
for j in range(n):
if m[i][j]=="A":
d.append([i,j])
c[i][j]=0
break
print(bfs())
禁止转载。仅用于自己学习。对程序错误不负责。
标题 穿越雷区 java_6届国赛java试题 4: 穿越雷区相关推荐
- 蓝桥杯第六届国赛JAVA真题----切开字符串
标题:切开字符串 Pear有一个字符串,不过他希望把它切成两段. 这是一个长度为N(<=10^5)的字符串. Pear希望选择一个位置,把字符串不重复不遗漏地切成两段,长度分别是t和N-t(这两 ...
- 蓝桥杯第六届国赛JAVA真题----表格计算
标题:表格计算 某次无聊中, atm 发现了一个很老的程序.这个程序的功能类似于 Excel ,它对一个表格进行操作. 不妨设表格有 n 行,每行有 m 个格子. 每个格子的内容可以是一个正整数,也可 ...
- 蓝桥杯第六届国赛JAVA真题----奇怪的数列
标题:奇怪的数列 从X星截获一份电码,是一些数字,如下: 13 1113 3113 132113 1113122113 .... YY博士经彻夜研究,发现了规律: 第一行的数字随便是什么,以后每一行都 ...
- 蓝桥杯第六届国赛JAVA真题----密文搜索
标题:密文搜索 福尔摩斯从X星收到一份资料,全部是小写字母组成. 他的助手提供了另一份资料:许多长度为8的密码列表. 福尔摩斯发现,这些密码是被打乱后隐藏在先前那份资料中的. 请你编写一个程序,从第一 ...
- 蓝桥杯第七届国赛JAVA真题----平方末尾
平方末尾 能够表示为某个整数的平方的数字称为"平方数" 比如,25,64 虽然无法立即说出某个数是平方数,但经常可以断定某个数不是平方数. 因为平方数的末位只可能是:[0, 1, ...
- 蓝桥杯第七届国赛JAVA真题----机器人塔
机器人塔 X星球的机器人表演拉拉队有两种服装,A和B. 他们这次表演的是搭机器人塔. 类似: 队内的组塔规则是: A 只能站在 AA 或 BB 的肩上. B 只能站在 AB 或 BA 的肩上. ...
- 蓝桥杯第七届国赛JAVA真题----七星填数
七星填数 如图[图1.png]所示. 在七角星的14个节点上填入1~14 的数字,不重复,不遗漏. 要求每条直线上的四个数字之和必须相等. 图中已经给出了3个数字. 请计算其它位置要填充的数字,答案唯 ...
- 11届国赛python试题 J: 蓝跳跳
蓝跳跳 [问题描述] 小蓝制作了一个机器人,取名为蓝跳跳,因为这个机器人走路的时候基本靠跳跃. 蓝跳跳可以跳着走,也可以掉头.蓝跳跳每步跳的距离都必须是整数,每步可以跳不超过 k 的长度.由于蓝跳跳的 ...
- Java B组蓝桥杯第十届国赛:大胖子走迷宫
试题 H: 大胖子走迷宫 时间限制: 1.0s 内存限制: 512.0MB 本题总分:20 分 [问题描述] 小明是个大胖子,或者说是个大大胖子,如果说正常人占用 1 × 1 的面积, 小明要占用 5 ...
最新文章
- 基于地面几何约束的单目视觉里程计精确鲁棒尺度恢复(ICRA 2021)
- [恢]hdu 2047
- jQuery图片提示和文字提示
- [转]expect的安装
- RFID开发利器 proxmark3
- 使用ASP.NET MVC3+EF+Jquery制作文字直播系统(四)——完成篇
- Design Patterns
- 一个简单的log2(x)的快速计算方法
- 【吹水阁】为什么微信红包单次上限200,不限制次数?——微信红包、转账支付宝转账
- ios应用不通过应用商店下载
- [Chatter] 架构设计是做甚么
- 关于LVGL下物理按键的使用
- cdr多页面排版_CDR排版跨页图片的制作方法
- 图像处理中 光场(Light Field)简介及理解
- python学习笔记之pdf文档提取
- 五种方式获取一个文件的扩展名
- dl4j+fnlp关联度TopN
- Windows App开发之更多技巧
- 电脑系统格式化需不需要重装系统
- 网络行为监控管理系统
热门文章
- linux 快速删除大文件夹
- 渠得清如许,源头活水来——2015年年终总结
- 基于matlab的步进电机转速控制仿真,基于matlab的步进电机转速控制仿真
- Windows7安装IIS
- 多麦克风做拾音的波束_【语音交互】先从麦克风阵列聊起
- Java架构师面试必备题(含答案)
- RT-Thread学习笔记五——临界区与临界区保护
- 大数据处理Spark:SparkStreaming--scala
- 计算机网络-因特网的组成
- Linux fs清理文件,linux – 在fs崩溃并运行fsck之后,一些文件被恢复但是找不到丢失的文件?...