拯救行动

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

英勇的骑士(r)决定孤身一人去拯救公主(a)。我们假设拯救成功的表示是 “骑士到达了公主所在的位置”。由于在通往公主所在位置的道路中可能遇到守卫,骑士一旦遇到守卫,必须杀死守卫才能继续前进。

现假设骑士可以向上、下、左、右四个方向移动,每移动一个位置需要 11 个单位时间,杀死一个守卫需要花费额外的 11 个单位时间。同时假设骑士足够强壮,有能力杀死所有的守卫。

给定牢房矩阵,公主、骑士和守卫在矩阵中的位置,请你计算拯救行动成功需要花费最短时间。

输入格式
1、两个整数代表 NN 和 M, (N, M \le 200)M,(N,M≤200).
2、随后 NN 行,每行有 MM 个字符。"@" 代表道路,“a” 代表公主,“r” 代表骑士,“x” 代表守卫, “#” 代表墙壁。

输出格式
如果拯救行动成功,输出一个整数,表示行动的最短时间。
如果不可能成功,输出 “Impossible”。

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

样例输入1

7 8
#@#####@
#@a#@@r@
#@@#x@@@
@@#@@#@#
#@@@##@@
@#@@@@@@
@@@@@@@@

样例输出1
13
样例输入2

13 40
@x@@##x@#x@x#xxxx##@#x@x@@#x#@#x#@@x@#@x
xx###x@x#@@##xx@@@#@x@@#x@xxx@@#x@#x@@x@
#@x#@x#x#@@##@@x#@xx#xxx@@x##@@@#@x@@x@x
@##x@@@x#xx#@@#xxxx#@@x@x@#@x@@@x@#@#x@#
@#xxxxx##@@x##x@xxx@@#x@x####@@@x#x##@#@
#xxx#@#x##xxxx@@#xx@@@x@xxx#@#xxx@x#####
#x@xxxx#@x@@@@##@x#xx#xxx@#xx#@#####x#@x
xx##@#@x##x##x#@x#@a#xx@##@#@##xx@#@@x@x
x#x#@x@#x#@##@xrx@x#xxxx@##x##xx#@#x@xx@
#x@@#@###x##x@x#@@#@@x@x@@xx@@@@##@@x@@x
x#xx@x###@xxx#@#x#@@###@#@##@x#@x@#@@#@@
#@#x@x#x#x###@x@@xxx####x@x##@x####xx#@x
#x#@x#x######@@#x@#xxxx#xx@@@#xx#x#####@

样例输出2
7

PS:还差一个样例,还望大佬指点

 import java.util.LinkedList;
import java.util.Scanner;public class Main {private static class Node {int x;int y;int step;public Node() {}public Node(int x, int y, int step) {this.x = x;this.y = y;this.step = step;}}private static int N = 220;private static LinkedList<Node> queue = new LinkedList<>();private static int r, c;private static char map[][] = new char[N][N];private static boolean vis[][] = new boolean[N][N];private static int dir[][] = {{-1, 0}, {1, 0}, {0, -1}, {0, 1}};private static void bfs(int sx, int sy, int ex, int ey) {boolean flag = true;Node n = new Node(sx, sy, 0);queue.add(n);//   vis[sx][sy] = true;while (!queue.isEmpty()) {Node nowP = queue.peek();
//              int dis = nowP.step;if (nowP.x == ex && nowP.y == ey) {flag = false;if(nowP.step==0) flag=true;else    System.out.println(nowP.step);break;} else {if (map[nowP.x][nowP.y] == 'x') {map[nowP.x][nowP.y] = '@';// vis[nowP.x][nowP.y] = false;queue.add(new Node(nowP.x, nowP.y, nowP.step + 1));} else {for (int i = 0; i < 4; i++) {int nx = nowP.x + dir[i][0];int ny = nowP.y + dir[i][1];if (nx >= 0 && nx < r && ny >= 0 && ny < c && !vis[nx][ny] && map[nx][ny] != '#') {vis[nx][ny] = true;queue.add(new Node(nx,ny,nowP.step+1));}}}}queue.pop();}if (flag) {System.out.println("Impossible");}}public static void main(String[] args) {int sx = 0, sy = 0, ex = 0, ey = 0;boolean bool1 = false ,bool2 = false; Scanner sc = new Scanner(System.in);r = sc.nextInt();c = sc.nextInt();//sc.nextLine();for (int i = 0; i < r; i++) {String s = sc.next();map[i] = s.toCharArray();}for (int i = 0; i < r; i++) {for (int j = 0; j < c; j++) {if (map[i][j] == 'r') {sx = i;sy = j;bool1=true;}if (map[i][j] == 'a') {ex = i;ey = j;bool2=true;//   map[i][j] = '@';}}} if(bool1 && bool2)bfs(sx, sy, ex, ey);else System.out.println("Impossible");}}

Java实现 计蒜客 拯救行动相关推荐

  1. Java实现 计蒜客 1251 仙岛求药

    仙岛求药 少年李逍遥的婶婶病了,王小虎介绍他去一趟仙灵岛,向仙女姐姐要仙丹救婶婶.叛逆但孝顺的李逍遥闯进了仙灵岛,克服了千险万难来到岛的中心,发现仙药摆在了迷阵的深处.迷阵由 M \times NM× ...

  2. 计蒜客题解——T1213:拯救行动

    题目相关 题目链接 计蒜客 OJ,https://nanti.jisuanke.com/t/T1213. 题目描述 公主被恶人抓走,被关押在牢房的某个地方.牢房用 N×M(N,M≤200) 的矩阵来表 ...

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

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

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

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

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

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

  6. 计蒜客 - 新年礼物

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

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

    新手,欢迎交流,更新完毕. 计蒜客 2020 蓝桥杯大学 A 组省赛模拟赛 (一)题目及解析 文章目录 A. 结果填空:有趣的数字 B. 结果填空:爬楼梯 C. 结果填空:七巧板 D. 结果填空:苹果 ...

  8. 无脑博士的试管们java_计蒜客 无脑博士和他的试管们

    标签: 无脑博士有三个容量分别是A,B,C升的试管,A,B,C分别是三个从1到20的整数,最初,A和B试管都是空的,而C试管是装满硫酸铜溶液的.有时,无脑博士把硫酸铜溶液从一个试管倒到另一个试管中,直 ...

  9. 最短路(遍历边)计蒜客—DD坐地铁

    题目: C 城有 n 个站点, m 条双向地铁,每条地铁有一个 companyicompany_icompanyi​表示它的公司,如果连续乘坐同一家公司的地铁只要花 1元钱就好.DD现在想出门找萨摩耶 ...

最新文章

  1. 记录一下g++的编译选项
  2. 18 常用模块 random shutil shevle logging sys.stdin/out/err
  3. 桌面显示菜单图标下面的字搞起阴影了,怎么弄掉?
  4. 网站优化需要借助哪些辅助工具?
  5. VS2019项目打包生成.exe文件与Setup的步骤实现
  6. MySQL 如何利用做排序
  7. 我们需要什么样的恐怖小说?
  8. 6、jeecg 笔记之 自定义excel 模板导出(一)
  9. ORM系列之Entity FrameWork详解
  10. html表单验证用正则表达式,JavaScript 使用正则表达式进行表单验证的示例代码
  11. php 返回script,从PHP脚本返回JSON
  12. readline函数重新定位到第一行_学习MATCH函数3种匹配方式,轻松确定数据位置和数量...
  13. IE11设置默认以IE8的方式解析
  14. java项目上线流程
  15. 向量积计算三角形面积
  16. 中兴力维动环监控接线图_肖东晖:动环是基本点 视频监控是增长点
  17. 安装opencv时出现PEP517问题解决
  18. 一个自动生成评论的小工具
  19. ESXi 6.7.0含RTL8168驱动安装包(亲测可用)
  20. VUE 项目中引入外部js文件(CND引入)

热门文章

  1. 利用自动机识别c 语言单词,第03章 词法分析与有穷自动机(2).ppt
  2. 挤奶牛Crowded Cows 洛谷p3088
  3. python3之Scrapy+Selenium切换iframe抓取网易云音乐排行榜
  4. 什么是响应式编程,Java 如何实现
  5. android基础 [超级详细android常用控件解析(ScollView控件,ProgressBar进度条,PopupWindow控件)]
  6. 使用 Mailgun 配置 Ghost 邮箱
  7. 《保健养生》---保健专家齐国力[2]
  8. 计算机毕业设计Java星星电影购票网站(源码+系统+mysql数据库+lw文档)
  9. dedecms站点采集标签
  10. Alexa Fluor 488标记亲和纯化驴抗兔IgG(H+L)二抗说明书