【华为校招】【校招】【Java】单词搜索(DFS)
■ 题目描述
【单词搜索】
找到它是一个小游戏,你需要在一个矩阵中找到给定的单词。
假设给定单词 HELLOWORD,在矩阵中只要能找到 H->E->L->L->O->W->O->R->L->D连成的单词,就算通过。
注意区分英文字母大小写,并且您只能上下左右行走,不能走回头路。
输入描述
输入第 1 行包含两个整数 n、m (0 < n,m < 21) 分别表示 n 行 m 列的矩阵,
第 2 行是长度不超过100的单词 W (在整个矩阵中给定单词 W 只会出现一次),
从第 3 行到第 n+2 行是指包含大小写英文字母的长度为 m 的字符串矩阵。
输出描述
如果能在矩阵中连成给定的单词,则输出给定单词首字母在矩阵中的位置(第几行 第几列),
否则输出“NO”。
示例1 输入输出示例仅供调试,后台判题数据一般不包含示例
输入
5 5
HELLOWORLD
CPUCY
EKLQH
CHELL
LROWO
DGRBC
输出
3 2
public class WordSearch {public static int m,n;public static boolean find;public static void dfs(int i,int j,char[][] board, String word, boolean[][] visited,int pos){if (i<0||i>=m||j<0||j>=n||visited[i][j]||find||board[i][j]!=word.charAt(pos)){return;}if (pos==word.length()-1){find = true;return;}visited[i][j] = true;dfs(i+1,j,board,word,visited,pos+1);dfs(i,j+1,board,word,visited,pos+1);dfs(i-1,j,board,word,visited,pos+1);dfs(i,j-1,board,word,visited,pos+1);visited[i][j] = false;}public static void main(String[] args) {Scanner sc = new Scanner(System.in);m = sc.nextInt();n = sc.nextInt();sc.nextLine();String word = sc.nextLine();System.out.println("word:"+word);char[][] board = new char[m][n];for (int i=0;i<m;i++){String str = sc.nextLine();System.out.println(str);for (int j=0;j<n;j++){board[i][j] = str.charAt(j);}}boolean[][] visited = new boolean[m][n];for (int i=0;i<m;i++){for (int j=0;j<n;j++){if (board[i][j] == word.charAt(0)) {dfs(i, j, board, word, visited, 0);if (find) {System.out.print(i + 1);System.out.print(" ");System.out.print(j + 1);return;}}}}}
}
【华为校招】【校招】【Java】单词搜索(DFS)相关推荐
- [Leetcode][第79题][JAVA][单词搜索][DFS][回溯]
[问题描述][中等] [解答思路] 1. DFS繁琐版本 class Solution {public boolean exist(char[][] board, String word) {bool ...
- 华为机试:单词搜索(找到它)
[编程题目 |200分] 单词搜索[2021 H2, 2022 Q1,Q2 考试题] 题目描述 找到它是一个小游戏,你需要在一个矩阵中找到给定的单词. 假设给定单词 HELLOWORD,在矩阵中只要能 ...
- 华为OD机试 - 单词搜索(Java JS Python)
题目描述 找到它是一个小游戏,你需要在一个矩阵中找到给定的单词. 假设给定单词 HELLOWORD,在矩阵中只要能找到 H->E->L->L->O->W->O-&g ...
- 79. 单词搜索(dfs)
给定一个二维网格和一个单词,找出该单词是否存在于网格中. 单词必须按照字母顺序,通过相邻的单元格内的字母构成,其中"相邻"单元格是那些水平相邻或垂直相邻的单元格.同一个单元格内的字 ...
- leetcode 79.单词搜索 dfs
原题链接 给定一个二维网格和一个单词,找出该单词是否存在于网格中. 单词必须按照字母顺序,通过相邻的单元格内的字母构成,其中"相邻"单元格是那些水平相邻或垂直相邻的单元格.同一个单 ...
- 华为oj题java单词博弈_【华为OJ】201301 JAVA 题目0-1级 将数组分为相等的两组
描述: 编写一个函数,传入一个int型数组,返回该数组能否分成两组,使得两组中各元素加起来的和相等,并且,所有5的倍数必须在其中一个组中,所有3的倍数在另一个组中(不包括5的倍数),能满足以上条件,返 ...
- LeetCode算法题13:DFS/BFS - 单词搜索
文章目录 单词搜索 DFS : 小小的优化 总结 单词搜索 题目链接:https://leetcode-cn.com/problems/word-search/ 题目描述: 给定一个 m x n 二维 ...
- [校招] 英文句子单词反转 - 哔哩哔哩 2020
[校招] 英文句子单词反转 - 哔哩哔哩 2020 描述 原地翻转句子中单词的顺序,但单词内字符的顺序不变.要求:空间复杂度O(1),时间复杂度O(n). 输入 英文句子中单词以一个空格符隔开.为简单 ...
- 2014宇龙酷派校招西安java类笔试题(热乎的,还冒烟呢)
2014宇龙酷派校招西安java类笔试题(热乎的,还冒烟呢) 分类: 校招笔经 or 面经2013-09-18 16:19 674人阅读 经过了 叫人伤感的 阿里,我决定去 这些小公司找找 信心,今天 ...
最新文章
- deploy java eclipse_使用eclipse的mvn deploy部署本地包到maven私有库
- mysql之 mysql 5.6不停机主主搭建(活跃双主基于日志点复制)
- Android 权限的一些细节
- Luogu 3698 [CQOI2017]小Q的棋盘
- apscheduler -定时任务
- 陕西电大学位英语计算机考试,2017年电大学位英语复习【呕心沥血整理、电大考试必过】.doc...
- Asciidoc语法
- mysql+last_query_cost_辛星简译MySQL中的last_query_cost
- McAfee企业版8.8——病毒库的备份与还原
- ESP8266与网络调试助手通讯
- 数据库连接池——基本原理
- kkrieger(100k的3DFPS游戏)+机器码游戏+97年编程第一名作品以及新的最牛的GAE云计算
- 扩增子图表解读2散点图:组间整体差异分析(Beta多样性)
- 036.crud准备
- MySQL篇之授权用户可以远程访问数据库
- IDA F5堆栈不平衡的处理
- 超详细!简单的物联网模块esp8266接入小爱爱同学控制电器(一)——控制开关灯
- 常见即时通讯:网易IM 、腾讯IM、环信IM、融云IM、leancloud IM介绍
- [Darktable]dt源码分析(未完)
- 基于CNN和VLAD的人体行为识别研究
热门文章
- 自定义类 无极限树形结构菜单(繁杂版)
- 常用数据集/工具下载地址
- 小高考三门计算机能报大专吗,美术生小高考的要求吗
- 【话费充值平台】话费充值平台接口设计
- python获取当前时间的函数_Python日期与时间
- 股权转让这个创业方向靠谱吗?关于潜力股这个创业公司的一些思考
- 哈希切割+布隆过滤器
- Errorcode? Thread1: EXC_BAD_ACCESS (code=EXCi386_GPFLT)
- 向企业微信发送文字、图片的接口【亲测有效】
- 香港为区块链专业人士降低移民门槛