字符矩阵内单词搜索
创始人
2024-05-13 18:49:19
0

单词搜索

问题链接:word search!!!
给定一个 m x n 二维字符网格 board 和一个字符串单词 word 。如果 word 存在于网格中,返回 true ;否则,返回 false 。

单词必须按照字母顺序,通过相邻的单元格内的字母构成,其中“相邻”单元格是那些水平相邻或垂直相邻的单元格。同一个单元格内的字母不允许被重复使用

示例 1:
在这里插入图片描述

输入:board = [["A","B","C","E"],["S","F","C","S"],["A","D","E","E"]], word = "ABCCED"
输出:true

示例 2:
在这里插入图片描述

输入:board = [["A","B","C","E"],["S","F","C","S"],["A","D","E","E"]], word = "SEE"
输出:true

示例 3:
在这里插入图片描述

输入:board = [["A","B","C","E"],["S","F","C","S"],["A","D","E","E"]], word = "ABCB"
输出:false

解题思路

深度优先搜索:先找到方格中字符串的开头字符,然后进行深度优先搜索算法,判断是否能够搜索到长度达到指定word长度的字符串。

代码样例

int x[4]={0,1,0,-1},y[4]={1,0,-1,0};
bool dfs(vector>& board,vector>& used,string& word,int index,int i,int j){if(index>=word.length()){return true;}int m=board.size(),n=board[0].size();bool temp=false;for(int orient=0;orient<4;orient++){int _x=i+x[orient],_y=j+y[orient];if(_x<0||_x>=m||_y<0||_y>=n){continue;}if(!used[_x][_y]&&board[_x][_y]==word[index]){used[_x][_y]=true;temp=dfs(board,used,word,index+1,_x,_y);if(temp){break;}used[_x][_y]=false;}}return temp;
}
bool exist(vector>& board, string word) {int m=board.size(),n=board[0].size();vector> used(m,vector(n));for(int i=0;ifor(int j=0;jif(board[i][j]==word[0]){used[i][j]=true;bool temp=dfs(board,used,word,1,i,j);if(temp){return true;}used[i][j]=false;}}}return false;
}

代码分析
深度优先搜索算法的退出条件、继续搜索条件和边界条件。

//1
if(index>=word.length()){return true;
}
//2
if(!used[_x][_y]&&board[_x][_y]==word[index]){
//3
int _x=i+x[orient],_y=j+y[orient];
if(_x<0||_x>=m||_y<0||_y>=n){continue;
}

这里在定义深度优先搜索函数时需要注意传值传引用的区别,这样是对board、used、word等变量进行传引用bool dfs(vector>& board,vector>& used,string& word,int index,int i,int j)。如果将其改成传值的形式(bool dfs(vector> board,vector> used,string word,int index,int i,int j))会导致算法超时,难以在限制的时间内执行完测试样例。
按照以上算法可以击败大多数人的提交程序。
在这里插入图片描述

相关内容

热门资讯

刘公岛导游词 刘公岛导游词范文(精选5篇)  作为一名乐于助人的导游,总归要编写导游词,导游词是导游员同游客交流思...
九龙洞风景区导游词贵州导游词 九龙洞风景区导游词贵州导游词  作为一名默默奉献的导游,时常需要编写导游词,导游词一般是根据实际的游...
云南澜沧江导游词 云南澜沧江导游词  澜沧江是湄公河上游在中国境内河段的名称,藏语拉楚,意思为“獐子河”。它也是中国西...
新疆概况旅游导游词 新疆概况旅游导游词范文(精选3篇)  作为一名尽职尽责的导游,有必要进行细致的导游词准备工作,借助导...
颐和园的导游词资料 关于颐和园的导游词资料  导游词是导游人员引导游客观光游览时的讲解词,是导游员同游客交流思想,向游客...
北京导游词 北京导游词(合集15篇)  作为一名优秀的旅游从业人员,时常要开展导游词准备工作,一篇完整的导游词,...
泰山景点介绍导游词 泰山景点介绍导游词(通用5篇)  作为一位不辞辛劳的导游,通常需要准备好一份导游词,导游词可以加深游...
校园导游词 校园导游词  作为一名专门引导游客、助人为乐的导游,就难以避免地要准备导游词,导游词一般是根据实际的...
韩国景点导游词 韩国景点导游词  大家好!  首先,欢迎大家到韩国首尔来旅游,下面就由我给大家介绍一下这个具有东方神...
介绍洛阳的导游词 介绍洛阳的导游词  洛阳位于河南,在那里有许多的特色文化,那么关于介绍洛阳的导游词都有哪些呢?下面是...
桂林聚龙潭导游词 桂林聚龙潭导游词  作为一位无私奉献的导游,时常需要用到导游词,导游词不是以一代百、千篇一律的,它必...
炳灵寺石窟导游词 炳灵寺石窟导游词  作为一名尽职尽责的导游,常常要根据讲解需要编写导游词,导游词是导游人员引导游客观...
西安大雁塔导游词 西安大雁塔导游词500字  游客朋友们:  大家好!  欢迎大家到西安大雁塔观光旅游!  大雁塔位于...
马鞍山森林公园讲解词 马鞍山森林公园讲解词  森林公园的导游词篇一:马鞍山森林公园导游词  大家好!欢迎来到马鞍山森林公园...
武汉导游词 武汉导游词范文(精选8篇)  作为一无名无私奉献的导游,时常需要用到导游词,导游词是导游员进行实地口...
大慈岩导游词 大慈岩导游词五篇  篇一:大慈岩导游词  大慈岩概况 在前面大家可以往右看一下。我们会看到在山腰上有...
五爷庙和杨五郎的关系导游词 五爷庙和杨五郎的关系导游词  一提起五台山,就知道它是五台山香火最旺,许愿最灵的寺庙。万佛阁是五爷庙...
优秀导游词 优秀导游词(精选35篇)  作为一名优秀的旅游从业人员,就有可能用到导游词,导游词是导游人员引导游客...
百里峡导游词 百里峡导游词精选  尊敬的各位朋友:  大家好!  欢迎来到祖冲之的故乡、山水休闲的胜地、美丽而热情...
屈原祠导游词 屈原祠导游词  作为一名专门为游客提供帮助的导游,编写导游词是必不可少的,导游词是导游员同游客交流思...