华为上机题之Word Maze(单词迷宫)
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(单词迷宫)相关推荐
- 2015年华为实习生机试样题(记票统计,计算麻将的番数,Word Maze(单词迷宫))
这是华为今年实习生招聘给的样题,还是特别喜欢考字符串处理问题. 记票统计 描述: 模拟n个人参加选举的过程,并输出选举结果:假设候选人有四人,分别用"A"."B" ...
- 华为软件类校招 2014年9月3日 熟悉机考环境 1.记票统计 2.求最大递增数 3.Word Maze(单词迷宫)
(样题,已对外公布)记票统计 描述: 模拟n个人参加选举的过程,并输出选举结果:假设候选人有四人,分别用"A"."B"."C"." ...
- Word Maze单词迷宫C语言解法(详细注解)
Word Maze单词迷宫C语言解法(详细注解) 题目描述 C语言代码 DFS算法 题目描述 Word Maze 是一个网络小游戏,你需要找到以字母标注的食物,但要求以给定单词字母的顺序吃掉.假设给定 ...
- word maze 单词迷宫 (java语言编写)
Word Maze 是一个网络小游戏,你需要找到以字母标注的食物,但要求以给定单词字母的顺序吃掉.如上图,假设给定单词 if,你必须先吃掉i然后才能吃掉f.但现在你的任务可没有这么简单,你现在处于一个 ...
- 华为上机题-二师弟的星际加法
华为上机题-二师弟的星际加法 1 问题描述 我是网络公司的一名普通程序员,英文名Steven,发音比较像"师弟",自从入职培训自我介绍后,大家就称我为"二师弟" ...
- 2014年华为上机题及代码
http://blog.csdn.net/dalianmaoblog/article/details/11477997 题目来源于http://blog.csdn.net/hackbuteer1/ar ...
- 华为上机题汇总----java
以下华为上机题目都是网上整理得到的,代码都是自己调试过的,由于网上java答案较少,欢迎大家批评指正,也希望对准备华为上机的童鞋们有一点点帮助.在练习的过程中成长,加油!~~ 第1题:输入字 ...
- 2013华为上机题C++编程
1. 字符串处理 把一个字符串中的除大写字母.小写字母和数字字符之外的其他字符都去掉,输出新字符串. 要求实现函数: void my_string(char* input, char* output) ...
- 20150802厦门大学华为校园提前批招聘机试体验题三:Word Maze(单词迷宫)
题三: (样题,已对外公布)Word Maze(单词迷宫) 描述: Word Maze 是一个网络小游戏,你需要找到以字母标注的食物,但要求以给定单词字母的顺序吃掉.如上图,假设给定单词if,你必须先 ...
最新文章
- 图像理解--Detecting and Recognizing Human-Object Interactions
- 看不到日志_Kubernetes中常用的日志收集方案
- 集成学习(期末复习)
- 关于Promise.all
- 新云网、5G、Wi-Fi 6 Plus,探秘2021通信展上的锐捷网络黑科技
- 华兴数控g71外圆循环编程_数控车床加工时的复合循环指令G70,G71,G72,G73
- 五年26个版本:Linux系统内核全程回顾
- App-V轻量级应用程序虚拟化之三客户端测试
- Mac下安装Flink的local模式(flink-1.2.0)
- PHP PDO学习(二) exec执行SQL
- 【笔试/面试】—— 数学找规律题
- c++和QT实现俄罗斯方块,使用GraphicsView。
- 浙江工业大学python试卷_20浙江工业大学计算机专硕考研经验贴
- 增长黑客AB-Test系统(四)——AB-Test 最小样本量
- js日期格式化函数示例:将日期时间格式化成yyyy-mm-dd hh:ii:ss格式
- office for Mac 2016/2019 百度云分享
- 大牛证券:涪陵榨菜Q2单季营收增速创近六年新低
- 神经性脚臭案例整理(一)
- WebSupergoo 11.310 C#PDF库组件 WebSuper
- 安利一个超牛的资源网站,国庆看片就用它了