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

已知的地图是一个方阵,上面用字母标出了A,B区,其它区都标了正号或负号分别表示正负能量辐射区。 
例如: 
A + - + - 
- + - - + 
- + + + - 
+ - + - + 
B + - + -

坦克车只能水平或垂直方向上移动到相邻的区。

数据格式要求:

输入第一行是一个整数n,表示方阵的大小, 4<=n<100 
接下来是n行,每行有n个数据,可能是A,B,+,-中的某一个,中间用空格分开。 
A,B都只出现一次。

要求输出一个整数,表示坦克从A区到B区的最少移动步数。 
如果没有方案,则输出-1

例如: 
用户输入: 

A + - + - 
- + - - + 
- + + + - 
+ - + - + 
B + - + -

则程序应该输出: 
10

import java.util.*;public class Main
{static int n,count=-1,k[][],x,y;public static void main(String args[]){Scanner cn=new Scanner(System.in);n=cn.nextInt();k=new int[n][n];boolean t[][]=new boolean [n][n];for(int i=0;i<n;i++)for(int j=0;j<n;j++){String r=cn.next();   //A记做3 +为1  -为0  B为4if(r.equals("A")){x=i;y=j;k[i][j]=3;t[i][j]=true;}else if(r.equals("B"))k[i][j]=4;else if(r.equals("+"))k[i][j]=1;else if(r.equals("-"))k[i][j]=0;}long t1=System.currentTimeMillis();dd(x,y,0,t);                //位置  步数long t2=System.currentTimeMillis();System.out.println(count);System.out.println("耗时:"+(t2-t1));}public static void dd(int q,int w,int step,boolean t[][]){if(k[q][w]==4){if(count==-1)count=step;else if(count>step)count=step;return;}if(step>count&&count!=-1)return;//上走     保证不在第一行   同时下一步的位置没有走过   同时避免++ 和--(即1+1=2和0+0=0)if(q!=0&&t[q-1][w]!=true&&k[q][w]+k[q-1][w]!=0&&k[q][w]+k[q-1][w]!=2) { t[q-1][w]=true;dd(q-1,w,step+1,t);t[q-1][w]=false;}       //回溯法的关键//下走if(q!=n-1&&t[q+1][w]!=true&&k[q][w]+k[q+1][w]!=0&&k[q][w]+k[q+1][w]!=2){ t[q+1][w]=true;dd(q+1,w,step+1,t);t[q+1][w]=false;}//左走if(w!=0&&t[q][w-1]!=true&&k[q][w]+k[q][w-1]!=0&&k[q][w]+k[q][w-1]!=2){ t[q][w-1]=true;dd(q,w-1,step+1,t);t[q][w-1]=false;}//右走if(w!=n-1&&t[q][w+1]!=true&&k[q][w]+k[q][w+1]!=0&&k[q][w]+k[q][w+1]!=2) { t[q][w+1]=true;dd(q,w+1,step+1,t);t[q][w+1]=false;}return;}
}

java 蓝桥杯 穿越雷区相关推荐

  1. java实现第六届蓝桥杯穿越雷区

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

  2. 蓝桥杯 穿越雷区(bfs)

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

  3. bfs 蓝桥杯 穿越雷区 python

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

  4. Java 蓝桥杯 我们的征途是星辰大海

    Java 蓝桥杯 我们的征途是星辰大海 最新的火星探测机器人curiosity被困在了一个二维迷宫里,迷宫由一个个方格组成. 共有四种方格: '.' 代表空地,curiosity可以穿过它 '#' 代 ...

  5. 标题 日期问题java蓝桥杯,日期类的使用(java)-蓝桥杯

    蓝桥杯日期问题常考,java提供了日期类很方便: //日历类 Calendar c = Calendar.getInstance(); // 获取实例化对象 Date date =c.getTime( ...

  6. java蓝桥杯练习 学做菜

    java蓝桥杯练习 学做菜 资源限制 时间限制:1.0s 内存限制:256.0MB 问题描述 涛涛立志要做新好青年,他最近在学做菜.由于技术还很生疏,他只会用鸡蛋,西红柿,鸡丁,辣酱这四种原料来做菜, ...

  7. java蓝桥杯练习 蜜蜂飞舞

    java蓝桥杯练习 蜜蜂飞舞 资源限制 时间限制:1.0s 内存限制:512.0MB 问题描述 "两只小蜜蜂呀,飞在花丛中呀--" 话说这天天上飞舞着两只蜜蜂,它们在跳一种奇怪的舞 ...

  8. JAVA 蓝桥杯 算法提高 阮小二买彩票

    JAVA 蓝桥杯 算法提高 阮小二买彩票 资源限制 时间限制:1.0s 内存限制:512.0MB 问题描述 在同学们的帮助下,阮小二是变的越来越懒了,连算账都不愿意自己亲自动手了,每天的工作就是坐在电 ...

  9. java蓝桥杯练习 拉马车

    java蓝桥杯练习 拉马车 资源限制 时间限制:1.0s 内存限制:256.0MB 问题描述 小的时候,你玩过纸牌游戏吗? 有一种叫做"拉马车"的游戏,规则很简单,却很吸引小朋友. ...

最新文章

  1. Spring Cloud Greenwich版本已发布!
  2. matlab 最小二乘法拟合_机器学习十大经典算法之最小二乘法
  3. 基础回顾(Map、==/equals()/hashcode())
  4. python绘制彩色地震剖面_在地图上绘制饼图时“爆炸”楔形图(Python,matplotlib)...
  5. 充电枪cp信号控制板_比亚迪E5无法交流充电故障检修
  6. Q:判断链表中是否存在环的相关问题
  7. 公差基本偏差代号_基本偏差代号公差等级代号.ppt
  8. 开心网之开心餐厅游戏分析报告
  9. UE激活(亲测有效,通过注册机激活)
  10. Chrome google浏览器从缓存下载视频
  11. [鼠标指针][仅需1步]宝藏的猫咪Cat老师[win10/11][点击看更多免费]......
  12. 小米硬盘路由器服务器,小米路由零售版699元 1T硬盘定位家庭服务器
  13. 安防想要抢食智能家居大蛋糕 应该如何转型?
  14. 移动游戏的新推广模式
  15. C语言经典题目:有5个人坐在一起,问他们分别多少岁?
  16. The error may exist in com/kuang/dao/UserMapper.xml
  17. 数据爬取——拍信网美女图片
  18. 抓取淘宝购物车数据以及足迹数据
  19. Android SDK 详解
  20. 在reportlab中,如果设置字符间距?

热门文章

  1. 逆时针螺旋矩阵的学习
  2. 关于office及edge浏览器无法登录微软账号的问题
  3. 2021年流动式起重机司机免费试题及流动式起重机司机试题及解析
  4. 异响加持、吐槽声不断,小鹏G9难解困局
  5. 拨开发展迷雾,将“智慧”嵌入全业务场景【2022戴尔科技峰会预告】
  6. 常见WEB漏洞原理分析
  7. h5故障代码_美的空调故障代码h5 看完你就知道了
  8. 2019电赛--OpenMV学习笔记
  9. photoshop cs5 基础教程 直接选择工具
  10. JAVA环境配置多环境(全,细,简单)