力扣刷题:单词搜索(C++实现)——记忆回溯方法
关于这类给定表格,查找单词问题,思路基本一致。每个各自有上下左右四个方向,向每个方向搜索的问题。具体代码如下所示。
class Solution {
public:bool exist(vector<vector<char>>& board, string word) {int n=board.size();int m=board[0].size();if(board.empty()||word.empty()){return false;} //当数组或者给定单词为空直接返回。vector<vector<int>>f(n,vector<int>(m,0)); //创建一个数组记录board上对应位置是否被使用过,初始值为0,使用过标记为1for(int i=0;i<n;i++){for(int j=0;j<m;j++){if(dfs(board,word,0,i,j,f))return true;}}return false;}bool dfs(vector<vector<char>>& board,string word,int index,int x,int y,vector<vector<int>>&f){//当搜索完整个单词,那么返回true.if(index==word.size()){return true;} if(x<0||x>=board.size()||y<0||y>=board[0].size()||board[x][y]!=word[index]) return false; //如果有越界或者是当前位置不是要搜索的下一个字符,那么直接返回false.if(f[x][y]==0){ //当前位置是要搜索的字符,那么从这个位置开始搜索下一个字符f[x][y]=1; //先将这个位置标记为使用过if(dfs(board,word,index+1,x+1,y,f)||dfs(board,word,index+1,x,y+1,f)||dfs(board,word,index+1,x-1,y,f)||dfs(board,word,index+1,x,y-1,f)){return true; //当前位置向四个方向有一个能够走完全程那么返回true} f[x][y]=0; //没有一个可以的证明从当前位置出发没有合适的单词,不能标记当前位置,因此复位。}return false; }};
力扣刷题:单词搜索(C++实现)——记忆回溯方法相关推荐
- 回溯法解决力扣79题单词搜索
回溯法解决力扣79题单词搜索 给定一个 m x n 二维字符网格 board 和一个字符串单词 word .如果 word 存在于网格中,返回 true :否则,返回 false . 单词必须按照字母 ...
- 力扣刷题-python-回溯算法-1(回溯算法模板、题型)
文章目录 1.回溯算法 2.回溯算法模板 3.回溯实例(77.216.17.39.40.131.93.78.90.491.46.47) 4.总结 1.回溯算法 回溯算法的本质就是穷举,最多再加上剪枝, ...
- 力扣刷题之二叉树的层序遍历
Welcome to you, 每日一刷系列 二叉树的层序遍历 二叉树的层序遍历II 二叉树的右视图 ...
- 力扣刷题pdf(java版本,内含暗黑版和光明版),都在这里了
BAT大佬力扣刷题pdf,都在这里了! 相信很多小伙伴刷题的时候面对力扣上近两千道题目,感觉无从下手! 我找了很久,今天终于让找到了Java版leetcode算法题解笔记,强烈建议先按照本篇介绍pd ...
- 力扣刷题记录--哈希表相关题目
当遇到需要快速判断一个元素是否出现在集合里面的时候,可以考虑哈希法,牺牲一定的空间换取查找的时间. java常用的哈希表有HashMap.HashSet以及用数组去模拟哈希,这几种方法各有优劣. 数组 ...
- 教你创建电脑、手机同步的markdown云笔记--力扣刷题力荐!
开篇先致歉 其他不谈,开篇必须先给各位读者道个歉,年后工作上比较忙,加上最近闲暇的时间都用来在力扣上刷算法题了,导致公众号断更有些严重啊.再加上年后将健身减重提上了日程,时间上就更显的捉襟见肘了. 不 ...
- 《剑指Offer》力扣刷题笔记(03-10)
<剑指Offer>力扣刷题笔记(03-10) 最近确实有点闲,想在进组搬砖之前找点有意义的事干,于是,就开始刷<剑指Offer>.<程序员面试金典>等书上的题目,也 ...
- 『力扣刷题』5275_找出井字棋的获胜者 解题代码
LeetCode-cn 力扣刷题 LeetCode-cn力扣刷题目录 165周赛 5275_找出井字棋的获胜者 * 5275. 找出井字棋的获胜者 显示英文描述* 用户通过次数0* 用户尝试次数0* ...
- 『力扣刷题』5276_不浪费原料的汉堡制作方案 解题代码
LeetCode-cn 力扣刷题 LeetCode-cn力扣刷题目录 165周赛 5276_不浪费原料的汉堡制作方案 * 5276. 不浪费原料的汉堡制作方案 显示英文描述* 用户通过次数212* 用 ...
- 『力扣刷题』5238_找出给定方程的正整数解 解题代码
html: embed_local_images: true embed_svg: true offline: true toc: undefined print_background: false ...
最新文章
- Unity 4.x游戏开发技巧集锦(内部资料)
- 实现线程之间的参数传递
- 计算机如何改变沟通方式,雅思阅读模拟题:计算机改变沟通方式
- 为什么读写文件要有缓冲区?为什么要有输入输出缓冲区?
- python 怎么报错后再次启动?
- wxWidgets:wxAuiManager类用法
- 斐波那契数与二分法的递归与非递归算法及其复杂度分析
- 既能被2又能被5整C语言,2012年国研究生统一考试心理学专业试题与答案
- java中double..compare_为什么Java的Double.compare(double,double)实现了它的样子?
- excel的IRR函数
- 最大约数(秋季每日一题 34)
- U-Mail邮件网关智能DNS技术,解决海外邮件接收问题
- 几种解决window10睡眠后WLAN打不开(无法通过WiFi图标唤醒或根本没有WLAN图标)问题的方法
- 量化数据分析有多厉害?
- OpenGL超级宝典的例子Triangle
- Linux C/C++ or 嵌入式面试之《C/C++笔面试系列》(2) C语言经典笔面试题(下)
- JeecgBoot 2.0.2 版本发布,基于SpringBoot快速开发平台
- 【buaa机试题】机场登机口调整
- 开源网校系统+源代码分享
- 超详细的张飞硬件第七部开关电源读书笔记02
热门文章
- Android_多媒体
- 一网打尽Redis Lua脚本并发原子组合操作
- springboot redis做缓存
- 归并算法Python3.7实现及时间复杂度分析
- AI:拿来主义——预训练网络(一)
- python绘制3d球体网格散点图
- java radiogroup_android RadioGroup实现单选以及默认选中 | 学步园
- js replace方法解决全部替换的问题(替换目标字符串 可以多个)
- YUV4:2:2和YUV4:2:0 区别
- 记一次因nofile参数设置错误而引起的服务器维修风波