仙岛求药

少年李逍遥的婶婶病了,王小虎介绍他去一趟仙灵岛,向仙女姐姐要仙丹救婶婶。叛逆但孝顺的李逍遥闯进了仙灵岛,克服了千险万难来到岛的中心,发现仙药摆在了迷阵的深处。迷阵由 M \times NM×N 个方格组成,有的方格内有可以瞬秒李逍遥的怪物,而有的方格内则是安全。现在李逍遥想尽快找到仙药,显然他应避开有怪物的方格,并经过最少的方格,而且那里会有神秘人物等待着他。现在要求你来帮助他实现这个目标。

输入格式
第一行输入两个非零整数 MM 和 NN,两者均不大于 2020。MM 表示迷阵行数, NN 表示迷阵列数。

接下来有 MM 行, 每行包含 NN 个字符,不同字符分别代表不同含义:

  1. ‘@’:少年李逍遥所在的位置;2) ‘.’:可以安全通行的方格;3) ‘#’:有怪物的方格;4) ‘*’:仙药所在位置。

输出格式
输出一行,该行包含李逍遥找到仙药需要穿过的最少的方格数目(计数包括初始位置的方块)。如果他不可能找到仙药, 则输出 -1−1。

输出时每行末尾的多余空格,不影响答案正确性

样例输入1

8 8
.@##...#
#....#.#
#.#.##..
..#.###.
#.#...#.
..###.#.
...#.*..
.#...###

样例输出1
10
样例输入2

6 5
.*.#.
.#...
..##.
.....
.#...
....@

样例输出2
8
样例输入3

9 6
.#..#.
.#.*.#
.####.
..#...
..#...
..#...
..#...
#.@.##
.#..#.

样例输出3
-1

 import java.util.LinkedList;
import java.util.Scanner;public class 仙岛求药 {static int N = 3000;//N需开大点static   int r,c;static   char[] []  map = new char[N][N];//用于保存地图static boolean  [] [] vis = new  boolean[N][N];//标识是否访问过的点static  int [] []dir = {{-1,0},{1,0},{0,-1},{0,1}}; //四个方向坐标static   class node{int x;int y;int step;}static  node []  q = new node[N];
public static     void bfs(int sx,int sy,int ex,int ey){int head=1,tail=1;boolean flag1 =true;vis[sx][sy]=true;node n = new node();n.x=sx;n.y=sy;n.step=0;q[tail]=n;tail++;while(head<tail){int x = q[head].x;int y = q[head].y;int step = q[head].step;if(x==ex&&y==ey) //终点则输出{flag1=false;System.out.printf("%d\n",step);break;}for(int i=0;i<4;i++){int nx = x+ dir[i][0];int ny = y +dir[i][1];if(nx >= 0 && nx < r && ny >= 0 && ny < c && vis[nx][ny] == false && map[nx][ny] == '.'){vis[nx][ny] = true;node nn;if (q[tail]==null){nn =new node();}else {nn = q[tail];}nn.x = nx;nn.y = ny;nn.step = step+1;q[tail]=nn;tail++;}}head++;}if(flag1)System.out.printf("-1\n");}public static void main(String[] args) {int sx = 0,sy=0,ex=0,ey=0;//  while(scanf("%d%d",&r,&c) != EOF && (r||c))Scanner sc = new Scanner(System.in);r = sc.nextInt();c = sc.nextInt();for (int k=0;k<r;k++){String s = sc.next();
map[k]=s.toCharArray();}for(int i=0;i<r;i++)for(int j=0;j<c;j++){if(map[i][j]=='@'){sx=i;sy=j;}if(map[i][j]=='*'){ex=i;ey=j;map[i][j]='.';//修改为 点}}bfs(sx,sy,ex,ey);}}

Java实现 计蒜客 1251 仙岛求药相关推荐

  1. 信息学奥赛一本通(1251:仙岛求药)

    1251:仙岛求药 时间限制: 1000 ms         内存限制: 65536 KB 提交数: 11479     通过数: 4968 [题目描述] 少年李逍遥的婶婶病了,王小虎介绍他去一趟仙 ...

  2. 百练/ 北京大学2016研究生推免上机考试(校内)D: 仙岛求药(广度优先搜索)

    题目来源:http://noi.openjudge.cn/ch0205/2727/ 2727:仙岛求药 总时间限制: 1000ms  内存限制:65536kB 描述 少年李逍遥的婶婶病了,王小虎介绍他 ...

  3. 一本通题解——1251:仙岛求药

    题目相关 题目链接 一本通 OJ,http://ybt.ssoier.cn:8088/problem_show.php?pid=1251. 计蒜客 OJ,https://nanti.jisuanke. ...

  4. Java实现 计蒜客 拯救行动

    拯救行动 公主被恶人抓走,被关押在牢房的某个地方.牢房用 N \times M (N, M \le 200)N×M(N,M≤200) 的矩阵来表示.矩阵中的每项可以代表道路(@).墙壁(#).和守卫( ...

  5. 仙岛求药(信息学奥赛一本通-T1251)

    [题目描述] 少年李逍遥的婶婶病了,王小虎介绍他去一趟仙灵岛,向仙女姐姐要仙丹救婶婶.叛逆但孝顺的李逍遥闯进了仙灵岛,克服了千险万难来到岛的中心,发现仙药摆在了迷阵的深处.迷阵由M×N个方格组成,有的 ...

  6. 计蒜客 T1954 圆锥体的表面积 JAVA

    计蒜客 T1954 圆锥体的表面积 蒜头君刚学习了 圆锥体 相关的立体几何知识,为了检测他的学习效果,花椰妹给他出了一个题目,给出一个圆锥体的底面圆的半径 r 和高度 h,计算这个圆锥体的表面积. 花 ...

  7. 计蒜客 挑战难题 爬楼梯

    计蒜客 挑战难题 爬楼梯 假设你现在正在爬楼梯,楼梯有n级.每次你只能爬1级或者2级,那么你有多少种方法爬到楼梯的顶部? 格式: 第一行输入一个数n(n<=50),代表楼梯的级数. 接下来一行输 ...

  8. 计蒜客 2020 蓝桥杯大学 A 组省赛模拟赛 (一)题目及解析

    新手,欢迎交流,剩下D题不知如何下手,望大佬指教. 计蒜客 2020 蓝桥杯大学 B 组省赛模拟赛 (一)题目及解析 文章目录 A. 结果填空:计算周长 B. 结果填空:七巧板 C. 结果填空:苹果 ...

  9. 计蒜客 - 新年礼物

    计蒜客 新年礼物 新年了,蒜厂 BOSS 要给小蒜头们发新年礼物,新年礼物有很多份,怎么分配这些礼物呢?蒜厂 BOSS 打算让大家玩一个游戏. 蒜头们可以从抽奖箱里抽出 NNN 个字符串,第 iii ...

最新文章

  1. 网站压力测试工具webbench
  2. 国外10大IT网站和博客网站
  3. 荣耀手机都不更新鸿蒙系统吗,华为EMUI不会更新了!直接升级鸿蒙系统,荣耀手机也不会放弃...
  4. vue2.0 项目搭建 和vue 2.0 electron 项目搭建
  5. mybatis 原理_图解源码 | MyBatis的Mapper原理
  6. 数跑科技联合阿里云创造基于云原生的无边界数字新体验
  7. linux SHELL下替代sed、ask的常用字符串处理(截取,判断、替换)
  8. 配置Visual Studio Code用作51单片机C51代码编辑器,替代KeilC编辑代码事半功倍!
  9. Java定时任务,定时执行某个操作
  10. JS (GMT)与普通时间格式的互相转换,JS转GMT格式时间
  11. win10电脑IIS服务器配置ASP环境
  12. 如何利用PS动作一秒将字体生成逼真刺绣效果
  13. 《写给大家看的设计书》——从iOS7的扁平化谈起
  14. 在 Oracle 云上用 Cluster API 升级 K8s 集群
  15. 深入理解分布式技术 - 容器化技术
  16. 客户端与服务器端通信方式总结
  17. AcWing Round #14
  18. 傲游创始人陈明杰创业故事
  19. 微信支付服务商模式下的支付-特约商户-----亲试有效
  20. [无线连接手机]-通过局域网无线连接调试手机设备

热门文章

  1. 香港中文大学计算机辅助翻译一年制,从潜力股到绩优股 三本生拿下香港中文大学计算机辅助翻译专业...
  2. migrating-vcenter-database-express-to-sql-2008-r2
  3. 信息论复习—线性分组码的基本性质
  4. 网络上的计算机之间又是如何交换信息的。(TCP/IP协议、IPX/SPX协议、NetBEUI协议)
  5. 学习笔记TF059:自然语言处理、智能聊天机器人
  6. Unity虚拟现实插件VRTK3.3使用教程二:在VR场景中瞬移
  7. 高光谱计算成像论文阅读-High-Quality Hyperspectral Reconstruction Using a Spectral Prior
  8. 关于如何用大数据做“用户画像”调查报告(持续更新)
  9. 【C语言】指针的经典且简单的案例分析
  10. 吴军北京来信:人工智能应该变成通识教育,区块链不是炒概念