穿越雷区(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: 穿越雷区相关推荐

  1. 蓝桥杯第六届国赛JAVA真题----切开字符串

    标题:切开字符串 Pear有一个字符串,不过他希望把它切成两段. 这是一个长度为N(<=10^5)的字符串. Pear希望选择一个位置,把字符串不重复不遗漏地切成两段,长度分别是t和N-t(这两 ...

  2. 蓝桥杯第六届国赛JAVA真题----表格计算

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

  3. 蓝桥杯第六届国赛JAVA真题----奇怪的数列

    标题:奇怪的数列 从X星截获一份电码,是一些数字,如下: 13 1113 3113 132113 1113122113 .... YY博士经彻夜研究,发现了规律: 第一行的数字随便是什么,以后每一行都 ...

  4. 蓝桥杯第六届国赛JAVA真题----密文搜索

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

  5. 蓝桥杯第七届国赛JAVA真题----平方末尾

    平方末尾 能够表示为某个整数的平方的数字称为"平方数" 比如,25,64 虽然无法立即说出某个数是平方数,但经常可以断定某个数不是平方数. 因为平方数的末位只可能是:[0, 1, ...

  6. 蓝桥杯第七届国赛JAVA真题----机器人塔

    机器人塔 X星球的机器人表演拉拉队有两种服装,A和B. 他们这次表演的是搭机器人塔. 类似: 队内的组塔规则是: A 只能站在 AA 或 BB 的肩上.     B 只能站在 AB 或 BA 的肩上. ...

  7. 蓝桥杯第七届国赛JAVA真题----七星填数

    七星填数 如图[图1.png]所示. 在七角星的14个节点上填入1~14 的数字,不重复,不遗漏. 要求每条直线上的四个数字之和必须相等. 图中已经给出了3个数字. 请计算其它位置要填充的数字,答案唯 ...

  8. 11届国赛python试题 J: 蓝跳跳

    蓝跳跳 [问题描述] 小蓝制作了一个机器人,取名为蓝跳跳,因为这个机器人走路的时候基本靠跳跃. 蓝跳跳可以跳着走,也可以掉头.蓝跳跳每步跳的距离都必须是整数,每步可以跳不超过 k 的长度.由于蓝跳跳的 ...

  9. Java B组蓝桥杯第十届国赛:大胖子走迷宫

    试题 H: 大胖子走迷宫 时间限制: 1.0s 内存限制: 512.0MB 本题总分:20 分 [问题描述] 小明是个大胖子,或者说是个大大胖子,如果说正常人占用 1 × 1 的面积, 小明要占用 5 ...

最新文章

  1. 基于地面几何约束的单目视觉里程计精确鲁棒尺度恢复(ICRA 2021)
  2. [恢]hdu 2047
  3. jQuery图片提示和文字提示
  4. [转]expect的安装
  5. RFID开发利器 proxmark3
  6. 使用ASP.NET MVC3+EF+Jquery制作文字直播系统(四)——完成篇
  7. Design Patterns
  8. 一个简单的log2(x)的快速计算方法
  9. 【吹水阁】为什么微信红包单次上限200,不限制次数?——微信红包、转账支付宝转账
  10. ios应用不通过应用商店下载
  11. [Chatter] 架构设计是做甚么
  12. 关于LVGL下物理按键的使用
  13. cdr多页面排版_CDR排版跨页图片的制作方法
  14. 图像处理中 光场(Light Field)简介及理解
  15. python学习笔记之pdf文档提取
  16. 五种方式获取一个文件的扩展名
  17. dl4j+fnlp关联度TopN
  18. Windows App开发之更多技巧
  19. 电脑系统格式化需不需要重装系统
  20. 网络行为监控管理系统

热门文章

  1. linux 快速删除大文件夹
  2. 渠得清如许,源头活水来——2015年年终总结
  3. 基于matlab的步进电机转速控制仿真,基于matlab的步进电机转速控制仿真
  4. Windows7安装IIS
  5. 多麦克风做拾音的波束_【语音交互】先从麦克风阵列聊起
  6. Java架构师面试必备题(含答案)
  7. RT-Thread学习笔记五——临界区与临界区保护
  8. 大数据处理Spark:SparkStreaming--scala
  9. 计算机网络-因特网的组成
  10. Linux fs清理文件,linux – 在fs崩溃并运行fsck之后,一些文件被恢复但是找不到丢失的文件?...