题目描述:

米小游来到了一个地图上,准备去采集1个甜甜花和1个禽肉来制作甜甜花酿鸡。已知米小游在地图上移动一次(上、下、左、右)需要花费1的时间。采集不需要花费时间。米小游采集完以后需要到篝火处才能制作甜甜花酿鸡(制作同样不需要花费时间)。米小游想知道,她至少需要多少时间才能制作一个甜甜花酿鸡?

输入:

第一行输入两个正整数n和m,代表地图的行数和列数。接下来的n行,每行输入一个长度为m的字符串。 字符‘.'代表陆地,米小游可以通过。 字符‘#’代表甜甜花. 字符‘$’代表禽肉. 字符“^”代表篝火. 宁符‘B’代表该处有一个遗迹守卫,米小游无法通过. 字符‘m’是代表米小游的初始位置。 保证禽肉、甜甜花和篝火总数不超过30.保证仅有一个‘m’. 1<n, m <=100

输出:

一个整数代表他花费的最少时间

样例输入:

5 5
.#.m.
#.B.B
B^...
...B#
$..$^

样例输出:

7

提示:

下下右下下左右共花费7单位时间

实现代码:

import java.util.LinkedList;
import java.util.Queue;
import java.util.Scanner;/*** @ClassName Huaniangji* @Description TODO* @Author heaboy@heaboy.com* @Version 1.0.0*/
public class Main {public static void main(String[] args) {Scanner sc = new Scanner(System.in);int n = sc.nextInt();int m = sc.nextInt();sc.nextLine();char[][] map = new char[n][m];for (int i = 0; i < n; i++) {map[i] = sc.nextLine().toCharArray();}hand(map, n, m);}static int min;static int target = 3;static int N;static int M;static int direct[]=new int[]{1,0,-1,0,0,1,0,-1};private static void hand(char[][] map, int n, int m) {N = n;M = m;min = Integer.MAX_VALUE;boolean used[][]= new boolean[n][m];for (int i = 0; i < map.length; i++) {for (int j = 0; j < map[i].length; j++) {if (map[i][j] == 'm') {bfs(map,i,j,0,0,used,false);break;}}}if(min==Integer.MAX_VALUE){System.out.println(-1);}else {System.out.println(min);}}private static void bfs(char[][] map, int i, int j, int now, int count, boolean[][] used, boolean fire) {Queue<int []> queue= new LinkedList<>();queue.add(new int[]{i,j,count,now});while (!queue.isEmpty()) {int[] poll = queue.poll();i=poll[0];j=poll[1];count=poll[2];now=poll[3];if (i < 0 || i == N || j < 0 || j == M) {continue;}char t = map[i][j];if (t == 'B') {continue;}if (now == target&&!fire) {fire = true;used = new boolean[N][M];queue=new LinkedList<>();queue.add(new int[]{i,j,count,now});}if (count > min) {continue;}if (!used[i][j]) {used[i][j] = true;if (t == '#') {now = (now | 1);} else if (t == '$') {now = (now | 2);}if (fire) {if (t == '^') {min = Math.min(min, count);break;}}for (int i1 = 0; i1 < direct.length; i1 += 2) {queue.add(new int[]{i + direct[i1], j + direct[i1 + 1], count+1,now});}}}}}

甜甜花酿鸡(自学研究代码实现)相关推荐

  1. 花授粉优化算法及代码实现

    花授粉优化算法及代码实现 1.算法简介 2.植物授粉机理 3.算法基本思想 Levy飞行 4.具体实现 1)自花授粉 - 局部搜索过程 2)异花授粉 - 全局搜索过程 3)流程图 4)主要代码及运行结 ...

  2. 菜鸡自学 Python 笔记(二)

    菜鸡自学 Python 笔记(二) 五,结构与语句 1.选择结构-- if 语句 2.循环控制语句 (1)while 语句 (2)for 语句 (3)continue 语句与break 语句 六.列表 ...

  3. c语言数字植物管理系统,基于AT89C52单片机的智能浇花系统(包含程序代码)

    内容简介: 基于AT89C52单片机的智能浇花系统,毕业论文,共50页,18022字,附程序代码.实物图等. 摘要 伴随着经济的快速发展,人们的物质生活水平得到了极大的提高,生活质量越来越为人们关注. ...

  4. 关于自主开发和研究代码

    我承认,如果说有什么事情是真正由内而外启发我的,让我全身心的去做这个事情,我觉得,研究我们如何运用科技来解决现实生活中的问题,一直是这样的事情,尤其是商业方面的事情 这句话说起来很好 但是有个问题 我 ...

  5. 重磅!深度学习圣经“花书”核心笔记、代码发布

    点击上方"AI有道",选择"置顶"公众号 重磅干货,第一时间送达 <深度学习>,又名"花书".该书由三位大佬 Ian Goodf ...

  6. 劲脆鸡米花、鸡排、黄金鸡块

    原材料 鸡胸肉. 胡椒粉.五香粉.孜然粉.鸡精 .玉米淀粉.鸡蛋.面包糠. 步骤 准备好一块优质的鸡胸肉,用清水冲洗干净,沥水备用 鸡胸肉切成大拇指,大小的小块备用. 放入调料:柠檬切小块(如果有的话 ...

  7. 论文浅尝 | 一日看尽长安花--NLP可解释研究梳理

    本文是对TACL2019<Analysis Methods in Neural Language Processing: A Survey>的翻译和整理. 本文转载自知乎,文章链接:htt ...

  8. 灵活高效,内含SOTA模型,Facebook开源图像分类研究代码库pycls

    点击我爱计算机视觉标星,更快获取CVML新技术 上周Facebook AI 研究院悄悄开源一个图像分类代码库pycls,该库使用PyTorch实现,可以高效助力相关研究人员快速设计网络和训练. 该库最 ...

  9. 阿里终于出手了!“00后职校女生自学 低代码 月薪破万” 背后真相,细思极恐...

    作者| Mr.K   编辑| Emma 来源| 技术领导力(ID:jishulingdaoli) 先来看一则报道: 云南 00 后女孩陆荣花高考失利,在职校期间她一边打工赚学费,一边坚持学习新技能,在 ...

最新文章

  1. modprobe和insmod区别
  2. 大改ShuffleNetV2网络,注意力机制,csp,卷积裁剪
  3. Linux卸载蓝牙模块,Linux 下调试低功耗蓝牙的笔记
  4. bzoj 5090 组题
  5. biginteger判断相等_java biginteger怎么比较大小
  6. pixhawk commander--navigator--modules之间的联系
  7. qt4.7 mysql_详解Qt 4.7编译和访问Mysql驱动
  8. pythonista脚本_IPA Installer脚本下载-Pythonista脚本IPA Installer(安装手机ipa文件) - 极光下载站...
  9. [Hnoi2006]马步距离
  10. 自己配置python环境_windows下python环境的配置
  11. 小脑袋智能推广软件360专版
  12. Ext.grid.GridPanel + asp.net 数据分页
  13. N天学习一个linux命令之rsync
  14. mysql 乐观锁和悲观锁,MySQL中的悲观锁与乐观锁
  15. python3.7 倒计时
  16. Java的GUI学习七(鼠标事件)
  17. MIME 类型大全,你值得收藏
  18. 结构体定义的几种形式
  19. 逆境“破局”的瑞幸咖啡
  20. 一名奔三的程序猿的困惑

热门文章

  1. ​ MyBatis 延迟加载 ​
  2. 书论06 蔡邕《九势》
  3. 【构造+贪心+分解质因数】CF868div2 C. Strongly Composite
  4. centos7搭建nps实现内网穿透
  5. javascript注释_JavaScript注释
  6. 学习ffmpeg视音频编解码
  7. jmeter接口测试-post请求
  8. 技术指标验证试验之KDJ
  9. 发送短信验证码+登陆功能
  10. 区块链软件公司:加密货币再演疯狂