Word Maze 是一个网络小游戏,你需要找到以字母标注的食物,但要求以给定单词字母的顺序吃掉。如上图,假设给定单词

if,你必须先吃掉i然后才能吃掉f。但现在你的任务可没有这么简单,你现在处于一个迷宫Maze(n×m的矩阵)当中,里面到处都是以字母标注的食物,但你只能吃掉能连成给定单词W的食物。

注意区分英文字母大小写,你只能上下左右行走。

运行时间限制: 1000ms
内存限制: 30m
输入:

输入第一行包含两个整数n、m(0<n, m<21)分别表示n行m列的矩阵,第二行是长度不超过100的单词W,从第3行到底n+3行是只包含大小写英文字母的长度为m的字符串。

输出: 如果能在地图中连成给定的单词,则输出“YES”,否则输出“NO”。注意:每个字母只能用一次。
样例输入:

5 5

SOLO

CPUCY

EKLQH

CRSOL

EKLQO

PGRBC

输出: YES

这题是典型的简化版迷宫算法。夜深了,简单画个图表示一下我解题的思路:

就是进行暴力遍历比对,先将所有的顺序从头开始跟S比对,等比对到S的时候,就进入递归开始比对第二个字母

代码如下:

我这里将几个需要用到的变量作为全局变量,方便后面递归使用

public class Maze {private static String[][] data = null;private static int[][] mark = null;private static String result = null;private static String work = null;private static int n;private static int m;public static void main(String[] args) {Scanner sc = new Scanner(System.in);while (sc.hasNext()) {result="NO";n = sc.nextInt();m = sc.nextInt();work = sc.next();mark = new int[n][m];data = new String[n][m];for (int i = 0; i < n; i++) {// 这里直接将单词分开存入二位数组中data[i] = sc.next().split("");}for (int i = 0; i < n; i++) {for (int j = 0; j < m; j++) {if (!data[i][j].equals(String.valueOf(work.charAt(0)))) {continue;} else {find(i, j, 0);}}}System.out.println(result);}}public static void find(int i, int j, int f) {if (i < 0 || i >= n || j < 0 || j >= m || f >= work.length()|| mark[i][j] == 1 || !data[i][j].equals(String.valueOf(work.charAt(f)))) {return;} else if (f == work.length() - 1 && String.valueOf(work.charAt(f)).equals(data[i][j])) {result = "YES";return;}mark[i][j] = 1;find(i-1,j,f+1);find(i+1,j,f+1);find(i,j-1,f+1);find(i,j+1,f+1);mark[i][j] = 0;}
}

word maze 单词迷宫 (java语言编写)相关推荐

  1. Word Maze单词迷宫C语言解法(详细注解)

    Word Maze单词迷宫C语言解法(详细注解) 题目描述 C语言代码 DFS算法 题目描述 Word Maze 是一个网络小游戏,你需要找到以字母标注的食物,但要求以给定单词字母的顺序吃掉.假设给定 ...

  2. 2015年华为实习生机试样题(记票统计,计算麻将的番数,Word Maze(单词迷宫))

    这是华为今年实习生招聘给的样题,还是特别喜欢考字符串处理问题. 记票统计 描述: 模拟n个人参加选举的过程,并输出选举结果:假设候选人有四人,分别用"A"."B" ...

  3. 华为软件类校招 2014年9月3日 熟悉机考环境 1.记票统计 2.求最大递增数 3.Word Maze(单词迷宫)

    (样题,已对外公布)记票统计 描述: 模拟n个人参加选举的过程,并输出选举结果:假设候选人有四人,分别用"A"."B"."C"." ...

  4. 华为上机题之Word Maze(单词迷宫)

    Word Maze 是一个网络小游戏,你需要找到以字母标注的食物,但要求以给定单词字母的顺序吃掉.如上图,假设给定单词if,你必须先吃掉i然后才能吃掉f. 但现在你的任务可没有这么简单,你现在处于一个 ...

  5. java写便签_如何编写一个便签程序(用Java语言编写)

    如何编写一个便签程序(用Java语言编写) 热度:336   发布时间:2011-02-18 11:44:16 如何编写一个便签程序(用Java语言编写) 因为以前没有好好学习Java,都搞忘了,请大 ...

  6. jdbc是java语言编写的类和接口_JDBC——Java语言连接数据库的标准

    JDBC概述 API JDBC(Java DataBase Connectivity,java数据库连接)是一种用于执行SQL语句的Java API,可以为多种关系数据库提供统一访问,它由一组用Jav ...

  7. 用Java语言编写的随机彩色验证码

    在制作网页过程中,免不了在登录注册页面增加一个验证码来延长数据提交时间,以免大量用户过快连接数据库读取,写入数据导致服务器崩溃.以下是用Java语言编写的彩色验证码,可用于jsp.html文件. 源代 ...

  8. 使用Java语言编写一个五子棋UI界面并实现网络对战功能(非局域网)

    使用Java语言编写一个五子棋UI界面并实现网络对战功能(非局域网) 一,前期准备 1,Java IDE(Eclipse)与JDK的安装与配置 jdk-15.0.1-免配置路径版 提取码:earu 免 ...

  9. java语言编写计算器_第二次作业利用java语言编写计算器进行四则运算

    随着第一次作业的完成,助教 牛老师又布置了第二次作业:用java语言编写一个程序然后进行四则运算用户用键盘输入一个字符来结束程序显示统计结果.一开始看到这个题目我也着实吓了一跳 因为不知道如何下手而且 ...

最新文章

  1. 日订单50万级分布式事务
  2. sql优化之:深入浅出理解索引(系列二)(讲解非常透彻)
  3. 我们为什么推荐在Json中使用string表示Number属性值
  4. (17)Zynq FPGA 全局定时器介绍
  5. 安装深度linux系统卡住不动,简单有效!一招解决深度Linux死机问题
  6. c语言齿轮标准模数选择编程,齿轮参数术语计算模数选择
  7. xml文件是什么?xml文档定义有几种形式?它们之间有何本质区别?解释xml文档又几种方式
  8. nfc加密卡pm3和pm5区别_【黑科技】NFC模拟门卡门禁
  9. zsh历史记录文件损坏: zsh: corrupt history file /home/admin/.zsh_history
  10. python爬取音乐网站排行榜_使用Python抓取Web端QQ音乐排行榜 批量下载QQ音乐到本地...
  11. SX1308锂电池升压1.5—3.7升5v1.5A 专为太阳能灯开发的DC/DC直流升压IC
  12. 第五篇:uCOS-IInbsp;信号量及其…
  13. 罗云彬:实现水波特效的代码例子
  14. web学生网页设计作业源码 HTML5+CSS大作业——三八女人节主题设计(1页)
  15. Nginx的http_access_module模块
  16. androidstudio虚拟机打不开的解决方法,一路坎坷,靠运气成功的!!!
  17. 数字孪生风机设备,智慧风电 3D 可视化智能运维
  18. 一个c加一个g是什么牌子_C和G打头的手表都有哪些?
  19. 理解:simulation、emulation、模拟、仿真
  20. js实现web网页版台球游戏

热门文章

  1. 怎么保护PDF的文字不被复制?
  2. MySQL: Incorrect string value: '\xF0\xA4\xBD\x82'分析解决
  3. DMB DSB和ISB区别
  4. 利用Tsai-lenz算法实现手眼标定
  5. 说到VDI与IDV的分分合合,不会再有比这更清晰的解释了!
  6. Elasticsearch(ES)入门,这一篇就够了
  7. vbscript下载文件(使用https绕过无效的证书错误)
  8. underscorejs-pluck学习
  9. RHEL7.3 DNS配置
  10. MySQL之filed函数