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

资源约定:

峰值内存消耗(含虚拟机) < 512M

CPU消耗  < 2000ms

请严格按要求输出,不要画蛇添足地打印类似:“请您输入...” 的多余内容。

所有代码放在同一个源文件中,调试通过后,拷贝提交该源码。

注意:不要使用package语句。不要使用jdk1.7及以上版本的特性。

注意:主类的名字必须是:Main,否则按无效代码处理。

用C数组记录每个位置的最短路径,用dfs逐渐找到B的位置。

1 importjava.util.Arrays;2 importjava.util.Scanner;3 classMain{4 static intn;5 static int[][] a;6 static inta1;7 static inta2;8 static boolean[][] b;9 static int[][] c;10 public static voidmain(String[] args) {11 Scanner input = newScanner(System.in);12 int n =input.nextInt();13 a = new int[n+2][n+2];14 b = new boolean[n+2][n+2];15 c = new int[n+2][n+2];16 for(int i=1;i<=n;i++){17 for(int j=1;j<=n;j++){18 String temp =input.next();19 if(temp.charAt(0)=='A'){20 a[i][j] = 2;21 a1 =i;22 a2 =j;23 }24 if(temp.charAt(0)=='+'){25 a[i][j] = 1;26 }27 if(temp.charAt(0)=='-'){28 a[i][j] = -1;29 }30 if(temp.charAt(0)=='B'){31 a[i][j] = -2;32 }33 }34 }35 for(int i=0;i<=n;i++){36 b[0][i] = true;37 }38 for(int i=0;i<=n;i++){39 b[n+1][i] = true;40 }41 for(int i=0;i<=n;i++){42 b[i][0] = true;43 }44 for(int i=0;i<=n;i++){45 b[i][n+1] = true;46 }47 System.out.println(f(a1,a2));48 }49 public static int f(int i,intj){50 if(a[i][j]==-2){51 return 0;52 }53 if(c[i][j]!=0){54 returnc[i][j];55 }56 b[i][j]= true;57 System.out.println(i+" "+j);58 int c1 = Integer.MAX_VALUE-1,c2=c1,c3=c1,c4=c1;59 if(!b[i][j+1]&&a[i][j]!=a[i][j+1]){60 c1 = f(i,j+1);61 }62 if(!b[i][j-1]&&a[i][j]!=a[i][j-1]){63 c1 = f(i,j-1);64 }65 if(!b[i+1][j]&&a[i][j]!=a[i+1][j]){66 c2 = f(i+1,j);67 }68 if(!b[i-1][j]&&a[i][j]!=a[i-1][j]){69 c3 = f(i-1,j);70 }71 b[i][j] = false;72 return c[i][j] = Math.min(Math.min(c1, c2), Math.min(c3, c4))+1;73 }74 }75

标题 穿越雷区 java_标题:穿越雷区相关推荐

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

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

  2. 标题 穿越雷区 java_蓝桥杯javaB--穿越雷区

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

  3. aspose word 获取标题_Word干货|多级标题的自动编号怎么添加?

    在对Word文档进行排版时,大家普遍认为的一个难点就是对多级标题添加自动编号,本期Word妹与大家分享相关技巧的使用. 1.添加样式 选中文本,点击开始--样式--选择标题1,相同的样式则可以借用F4 ...

  4. php中一级标题和二级标题,什么是一级标题,一二三标题格式举例

    什么是一级标题什么是一流的标题,第一级标题是讨论的第一个内容,如序言:一级标题通常指序号为[I,]的标题,也是最大的标题它是4号黑体,单行无标点符号:二级标题是指序号为[(1)]的标题,一般与正文字号 ...

  5. DEDE无简略标题时显示完整标题

    新闻的标题需要进行字数限制,这就需要加入一个title属性,让鼠标放上去的时候显示完整标题.另外目前的调用只能同时调用一种标题方式,不过可 以采用以下方法,进行判断,无简略标题显示完整标题.例如ded ...

  6. html标题代码字号,HTML 标题

    HTML 标题 属性(attribute)提供关于元素的更多信息. 标题(heading)是HTML文档里的重要部分. HTML标题 标题是用 . ... 这些标签来定义的. 定义最大号标题, 定义最 ...

  7. WPS下级标题不根据上级标题的编号改变而改变解决办法

    1.现象:WPS下级标题不根据上级标题的编号改变而改变 2.解决方法:[标题2] 右键 [修改样式] [格式] [编号] [自定义列表] [自定义] 右侧[级别]挨个点击  [将级别链接到样式]为(无 ...

  8. 计算机在表格顶端添加标题,电脑Excel表格在打印时怎么设置每页有相同的顶端标题和底端标题...

    电脑Excel表格在打印时怎么设置每页有相同的顶端标题和底端标题 腾讯视频/爱奇艺/优酷/外卖 充值4折起 我们经常需要使用Excel来处理数据.那么今天小编跟大家分享下电脑Excel表格在打印时怎么 ...

  9. EasyExcel标题加批注和标题字体填充红色

    七. EasyExcel标题加批注和标题字体填充红色 一, 概述 在日常开发中, 经常会碰到导入导出的场景, 有导入就肯定有导入模板, 本文将介绍利用EasyExcel给标题添加批注和挑剔字体填充颜色 ...

最新文章

  1. 简单 描述oracle 存储结构,下面的各选项中哪一个正确描述了
  2. liunx mysql模块_linux下安装MySQLdb模块_MySQL
  3. linux打开u盘里的文件,Linux下U盘内容为只读文件不能存储其他内容的解决办法
  4. c语言八个方向迷宫课程设计,【精品资料最新版】C语言课程设计-迷宫游戏.doc...
  5. php设置mysql查询编码,php连接mysql时怎么设置编码方式
  6. 蓝桥杯 ALGO-42 算法训练 送分啦
  7. Linux多台主机互相免密登陆
  8. JAXB处理java对象与xml格式之间的转换
  9. UNIX 环境高级编程(五)—— unistd.h
  10. 微猫恋爱聊妹术V2小程序源码4.1.0多开版 附安装及前端调试教程
  11. word多级标题下一级和上一级没有关联上
  12. matlab刻度字体,matlab 设置横纵坐标刻度的字体!!
  13. java.sql.SQLException: sql injection violation, syntax error: TODO QUES
  14. 光谱分析中的变量选择
  15. 基于 NIOSII 软核的流水灯实验
  16. python字符串中常见的内置方法
  17. javax.servlet.Filter详解(二) 转自:http://hi.baidu.com/jxnuywf/blog/item/f3834aee93e2fdf8b2fb95cc.html
  18. 企业知识管理包括哪些内容?
  19. ssm+JSP计算机毕业设计工伤事故管理系统bzc3b【源码、程序、数据库、部署】
  20. HI5 2.0 交互 SDK 用户手册—— HTC Vive 系列

热门文章

  1. 909. 蛇梯棋-广度优先遍历
  2. C语言基础题-水仙花数
  3. Acrobat Pro DC 教程:如何编辑 PDF 文件中的文本和图片?
  4. 计算机与外设维修初级,计算机的外设维修实例论文.docx
  5. 如何完美安装微软必应输入法
  6. 基于php的校园视频点播系统
  7. buu [SWPU2019]ReverseMe1 wp
  8. Jsp和Javascript读写cookie,cookie的path设置,jsp解码cookie值
  9. 反黑防黑技巧:腾讯QQ 被盗的形式及密码保护技巧
  10. BLE Error Codes 查表