import java.util.Scanner;
public class Main{

private static boolean isFind = false;//全局变量,保存是否找到食物单词
private static boolean[][] flag;//保存访问标记

public static void main(String[] args){
    Scanner scan = new Scanner(System.in);
    while(scan.hasNext()){
    int n = scan.nextInt();
    int m = scan.nextInt();
    String w = scan.next();
    char[][] maze = new char[n][m];
    flag = new boolean[n][m];//访问标记位
    for(int i = 0 ; i < n ; i++){
    maze[i] = scan.next().toCharArray();
    }
    findStart(n , m , w , maze);
    if(isFind){
    System.out.println("YES");
    }else{
    System.out.println("NO");
    }
    }    
    scan.close();
    }  
    private static void findStart(int n , int m , String w , char[][] maze){
    //遍历结束如果isFind还没有更新为true表示没有找到
    for(int i = 0 ; i < n ; i++){
    for(int j = 0 ; j < m ; j++){
    if(maze[i][j] == w.charAt(0)){
    flag[i][j] = true;
    findNext(w , 1 , i , j , maze);
    if(isFind) return;   //如果找到直接返回,如果找不到遍历完maze
    }
    }
    }
    }
    private static void findNext(String w, int index, int row, int col , char[][] maze) {
    int n = maze.length;
    int m = maze[0].length;
if(index == w.length()){
isFind = true;
return;
}
int nextIndex = index + 1;
//防止越界
    if(row - 1 >= 0 && !flag[row - 1][col]){
    if(maze[row - 1][col] == w.charAt(index)){  
    flag[row - 1][col] = true;
    findNext(w , nextIndex , row - 1 , col , maze);
    }
    }
   
    if(row + 1 < n && !flag[row + 1][col]){
    if(maze[row + 1][col] == w.charAt(index)){  
    flag[row + 1][col] = true;
    findNext(w , nextIndex , row + 1 , col , maze);
    }
    }    
   
    if(col - 1 >= 0 && !flag[row][col - 1]){
    if(maze[row][col - 1] == w.charAt(index)){  
    flag[row - 1][col] = true;
    findNext(w , nextIndex , row , col - 1 , maze);
    }
    }
    if(col + 1 < m && !flag[row][col + 1]){
    if(maze[row][col + 1] == w.charAt(index)){  
    flag[row][col + 1] = true;
    findNext(w , nextIndex , row , col + 1 , maze);
    }
    }
flag[row][col] = false;//如果当前节点走不下去,更新为false,重新寻找其他字母
}
}

华为机试---Word Maze迷宫游戏相关推荐

  1. 华为机试:机器人走迷宫

    题目来源 华为机试:机器人走迷宫 题目描述 1. 房间由XY的方格组成,例如下图为64的大小.每一个方格以坐标(x,y)描述. 2. 机器人固定从方格(0,0)出发,只能向东或者向北前进.出口固定为房 ...

  2. 华为机试二星题--机器人走迷宫

    题目 机器人走一个迷宫,给出迷宫的x和y(x*y的迷宫)并且迷宫中有障碍物,输入k表示障碍物有k个,并且会将障碍物的坐标挨个输入. 机器人从0,0的位置走到x,y的位置并且只能向x,y增加的方向走,不 ...

  3. 【华为机试真题 Python实现】报数游戏

    文章目录 前言 题目描述 示例 1 示例 2 参考代码 前言 <华为机试真题>专栏含牛客网华为专栏.华为面经试题.华为OD机试真题. 如果您在准备华为的面试,期间有想了解的可以私信我,我会 ...

  4. 华为机试108题(C 语言解答)

    Nowcoder题库链接:华为机试 HJ1 字符串最后一个单词的长度(字符串) 输入:hello nowcoder输出:8说明: 最后一个单词为nowcoder,长度为8 示例代码: HJ1.c #i ...

  5. 【强烈推荐收藏】坚持3个月爆肝华为机试108题C++全解(适合新手入门,就业必刷套题)

    作者:翟天保Steven 版权声明:著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处 前言 金九银十,金三银四.当前正处于校招.社招的火热期,之前就想为正在筹备就业的同学们准备刷题宝 ...

  6. 【华为机试真题Java】从入门到入职-真题列表导读

    写在前面 本专栏有100+道题(持续更新中),都是往期的HW机试真题,根据过往同学的经验基本都会考到原题.大家有什么不懂的都可以留言. 华为机试有三道题目,第一道和第二道属于简单或中等题,分值为100 ...

  7. 牛客在线编程-华为机试-中等

    牛客在线编程题目-华为机试-中等 题号 题目 知识点 难度 通过率 HJ16 购物单 动态规划 中等 21.21% HJ17 坐标移动 字符串 中等 24.79% HJ20 密码验证合格程序 数组 字 ...

  8. 【华为机试真题 Python实现】2022年4、5月高频机试题

    文章目录 2022年4.5月高频机试题 机试必须要会的函数 输入输出处理 for 循环 通过下标访问元素 直接迭代访问元素 同时访问下标和元素 while 循环 字符ASSIC码转换 进制转换 绝对值 ...

  9. 集合篇10.华为机试(涮题记录2)

    华为机试 31.成绩排序(**not) 32. 矩阵乘法 33. 24点游戏算法(not) 34.配置文件恢复 35. 查找两个字符串a.b中的最长公共子串 36.MP3光标位置(not) 37.DN ...

最新文章

  1. SIFT特征点匹配中KD-tree与Ransac算法的使用
  2. 7-1 对称日 (15分)
  3. %matplotlib inline %config InlineBackend.figure_format = “retina为了将图片嵌入notebook及提高分
  4. linux和android调试概要
  5. 11、CROSS JOIN:交叉连接(笛卡尔积)
  6. 我是Python小玩家,一行代码能做哪些炫酷的事情 (三十一)
  7. OnClickListener冲突的问题
  8. MIP开发教程(一) MIP-CLI工具安装与环境部署
  9. 性能优化挑战重重,鲲鹏 HPC 如何突破算力桎梏?
  10. 用 65 行代码实现 JavaScript 动画序列播放
  11. 笔记本电脑下载python视频-笔记本怎样安装Python64位的?
  12. 笨办法学Python(第三版)pdf
  13. 2015 多校联赛 ——HDU5302(矩阵快速幂)
  14. mysql sql model设置_操作mysql model
  15. android 快速unity,关于android:Unity平台-快速集成华为性能管理服务
  16. 一起学习MySQL(基础阶段已完结)
  17. 国产操作系统要起来?自主银河麒麟V10发布!
  18. WebRTC收集网卡地址信息 源码剖析
  19. iOS weak关键字实现原理
  20. 大数据产品开发流程规范_大数据开发步骤和流程

热门文章

  1. android 红外驱动,Android内核驱动-红外驱动IR
  2. MySQL学习(2)——MySQL表的增删查改(基础)
  3. QQ查询信息php,查询QQ信息
  4. 韩信点兵--中国剩余定理
  5. AngularJs实战(六)
  6. screenX clientX pageX的区别
  7. mysql order field_mysql 使用order by filed,locate和instr自定义排序
  8. Basset: learning the regulatory code of the accessible genome with deep convolutional neural network
  9. Bootstrap登录页面带验证码
  10. (LaTex)CTex的初次使用心得及入门教程