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

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

如下图,指定W为“SOLO”,则在地图中红色标注了单词“SOLO”。

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

输入:

5 5

SOLO

CPUCY

EKLQH

CRSOL

EKLQO

PGRBC

输出:

YES

这道题目比较基础,遍历数组找到开头字母,再BFS或者DFS遍历就可以找到了。但是需要注意一点,就是字母不能重用,比如上面输入“SOLO”输出YES,但输入“SOLOL”则没返回结果,因为'L'重用。

import java.util.HashSet;
import java.util.Scanner;
import java.util.Set;public class Main {static boolean result = false;public static void main(String[] args) {Scanner cin = new Scanner(System.in);int n = 0, m = 0;if (cin.hasNext()) {n = cin.nextInt();m = cin.nextInt();}String target = cin.next();char arrs[][] = new char[n][m];int i = 0;while (cin.hasNext()) {String temp = cin.next();for (int j = 0; j < temp.length(); j++) {arrs[i][j] = temp.charAt(j);}i++;if (i == n)break;}char first = target.charAt(0);for (i = 0; i < arrs.length; i++) {for (int j = 0; j < arrs[i].length; j++) {if (arrs[i][j] == first) {HashSet set = new HashSet();find(arrs, n, m, i, j, target, set);if (result)break;}}}}private static void find(char[][] arrs, int n, int m, int i, int j,String target, HashSet hashSet) {// TODO Auto-generated method stubchar first = target.charAt(0);if (arrs[i][j] != first) {return;}if (hashSet.contains(i + j)) {return;}if (target.length() == 1) {System.out.println("YES");result = true;return;}hashSet.add(i + j);target = target.substring(1);for (int len = 0; len < 4; len++) {HashSet temp = new HashSet(hashSet);switch (len) {case 0:if (i > 0)find(arrs, n, m, i - 1, j, target, temp);elsereturn;break;case 1:if (i < n - 1)find(arrs, n, m, i + 1, j, target, temp);elsereturn;break;case 2:if (j > 0)find(arrs, n, m, i, j - 1, target, temp);elsereturn;break;case 3:if (j < m - 1)find(arrs, n, m, i, j + 1, target, temp);elsereturn;break;default:break;}}}
}

华为上机题之Word Maze(单词迷宫)相关推荐

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

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

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

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

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

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

  4. word maze 单词迷宫 (java语言编写)

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

  5. 华为上机题-二师弟的星际加法

    华为上机题-二师弟的星际加法 1 问题描述 我是网络公司的一名普通程序员,英文名Steven,发音比较像"师弟",自从入职培训自我介绍后,大家就称我为"二师弟" ...

  6. 2014年华为上机题及代码

    http://blog.csdn.net/dalianmaoblog/article/details/11477997 题目来源于http://blog.csdn.net/hackbuteer1/ar ...

  7. 华为上机题汇总----java

        以下华为上机题目都是网上整理得到的,代码都是自己调试过的,由于网上java答案较少,欢迎大家批评指正,也希望对准备华为上机的童鞋们有一点点帮助.在练习的过程中成长,加油!~~  第1题:输入字 ...

  8. 2013华为上机题C++编程

    1. 字符串处理 把一个字符串中的除大写字母.小写字母和数字字符之外的其他字符都去掉,输出新字符串. 要求实现函数: void my_string(char* input, char* output) ...

  9. 20150802厦门大学华为校园提前批招聘机试体验题三:Word Maze(单词迷宫)

    题三: (样题,已对外公布)Word Maze(单词迷宫) 描述: Word Maze 是一个网络小游戏,你需要找到以字母标注的食物,但要求以给定单词字母的顺序吃掉.如上图,假设给定单词if,你必须先 ...

最新文章

  1. 图像理解--Detecting and Recognizing Human-Object Interactions
  2. 看不到日志_Kubernetes中常用的日志收集方案
  3. 集成学习(期末复习)
  4. 关于Promise.all
  5. 新云网、5G、Wi-Fi 6 Plus,探秘2021通信展上的锐捷网络黑科技
  6. 华兴数控g71外圆循环编程_数控车床加工时的复合循环指令G70,G71,G72,G73
  7. 五年26个版本:Linux系统内核全程回顾
  8. App-V轻量级应用程序虚拟化之三客户端测试
  9. Mac下安装Flink的local模式(flink-1.2.0)
  10. PHP PDO学习(二) exec执行SQL
  11. 【笔试/面试】—— 数学找规律题
  12. c++和QT实现俄罗斯方块,使用GraphicsView。
  13. 浙江工业大学python试卷_20浙江工业大学计算机专硕考研经验贴
  14. 增长黑客AB-Test系统(四)——AB-Test 最小样本量
  15. js日期格式化函数示例:将日期时间格式化成yyyy-mm-dd hh:ii:ss格式
  16. office for Mac 2016/2019 百度云分享
  17. 大牛证券:涪陵榨菜Q2单季营收增速创近六年新低
  18. 神经性脚臭案例整理(一)
  19. WebSupergoo 11.310 C#PDF库组件 WebSuper
  20. 安利一个超牛的资源网站,国庆看片就用它了

热门文章

  1. 海思3559万能平台:VGS的画线处理
  2. 智能测试实践之路-UI缺陷检测
  3. 开关造成的毛刺_令人困扰的DAC输出毛刺消灭记
  4. notifier通知链机制
  5. docker实现nginx反向代理、负载均衡
  6. Windows 10出现0xc0000225错误代码如何解决?
  7. 文件关联注册表项都有哪些?
  8. 购买弹性云服务器怎么部署网站,购买后怎么部署自己的云服务器
  9. 《仙剑奇侠传3》全攻略
  10. 程序员值得关注的微信公众号