关于这类给定表格,查找单词问题,思路基本一致。每个各自有上下左右四个方向,向每个方向搜索的问题。具体代码如下所示。

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++实现)——记忆回溯方法相关推荐

  1. 回溯法解决力扣79题单词搜索

    回溯法解决力扣79题单词搜索 给定一个 m x n 二维字符网格 board 和一个字符串单词 word .如果 word 存在于网格中,返回 true :否则,返回 false . 单词必须按照字母 ...

  2. 力扣刷题-python-回溯算法-1(回溯算法模板、题型)

    文章目录 1.回溯算法 2.回溯算法模板 3.回溯实例(77.216.17.39.40.131.93.78.90.491.46.47) 4.总结 1.回溯算法 回溯算法的本质就是穷举,最多再加上剪枝, ...

  3. 力扣刷题之二叉树的层序遍历

                                                      Welcome to you, 每日一刷系列 二叉树的层序遍历 二叉树的层序遍历II 二叉树的右视图 ...

  4. 力扣刷题pdf(java版本,内含暗黑版和光明版),都在这里了

    BAT大佬力扣刷题pdf,都在这里了! ​相信很多小伙伴刷题的时候面对力扣上近两千道题目,感觉无从下手! 我找了很久,今天终于让找到了Java版leetcode算法题解笔记,强烈建议先按照本篇介绍pd ...

  5. 力扣刷题记录--哈希表相关题目

    当遇到需要快速判断一个元素是否出现在集合里面的时候,可以考虑哈希法,牺牲一定的空间换取查找的时间. java常用的哈希表有HashMap.HashSet以及用数组去模拟哈希,这几种方法各有优劣. 数组 ...

  6. 教你创建电脑、手机同步的markdown云笔记--力扣刷题力荐!

    开篇先致歉 其他不谈,开篇必须先给各位读者道个歉,年后工作上比较忙,加上最近闲暇的时间都用来在力扣上刷算法题了,导致公众号断更有些严重啊.再加上年后将健身减重提上了日程,时间上就更显的捉襟见肘了. 不 ...

  7. 《剑指Offer》力扣刷题笔记(03-10)

    <剑指Offer>力扣刷题笔记(03-10) 最近确实有点闲,想在进组搬砖之前找点有意义的事干,于是,就开始刷<剑指Offer>.<程序员面试金典>等书上的题目,也 ...

  8. 『力扣刷题』5275_找出井字棋的获胜者 解题代码

    LeetCode-cn 力扣刷题 LeetCode-cn力扣刷题目录 165周赛 5275_找出井字棋的获胜者 * 5275. 找出井字棋的获胜者 显示英文描述* 用户通过次数0* 用户尝试次数0* ...

  9. 『力扣刷题』5276_不浪费原料的汉堡制作方案 解题代码

    LeetCode-cn 力扣刷题 LeetCode-cn力扣刷题目录 165周赛 5276_不浪费原料的汉堡制作方案 * 5276. 不浪费原料的汉堡制作方案 显示英文描述* 用户通过次数212* 用 ...

  10. 『力扣刷题』5238_找出给定方程的正整数解 解题代码

    html: embed_local_images: true embed_svg: true offline: true toc: undefined print_background: false ...

最新文章

  1. Unity 4.x游戏开发技巧集锦(内部资料)
  2. 实现线程之间的参数传递
  3. 计算机如何改变沟通方式,雅思阅读模拟题:计算机改变沟通方式
  4. 为什么读写文件要有缓冲区?为什么要有输入输出缓冲区?
  5. python 怎么报错后再次启动?
  6. wxWidgets:wxAuiManager类用法
  7. 斐波那契数与二分法的递归与非递归算法及其复杂度分析
  8. 既能被2又能被5整C语言,2012年国研究生统一考试心理学专业试题与答案
  9. java中double..compare_为什么Java的Double.compare(double,double)实现了它的样子?
  10. excel的IRR函数
  11. 最大约数(秋季每日一题 34)
  12. U-Mail邮件网关智能DNS技术,解决海外邮件接收问题
  13. 几种解决window10睡眠后WLAN打不开(无法通过WiFi图标唤醒或根本没有WLAN图标)问题的方法
  14. 量化数据分析有多厉害?
  15. OpenGL超级宝典的例子Triangle
  16. Linux C/C++ or 嵌入式面试之《C/C++笔面试系列》(2) C语言经典笔面试题(下)
  17. JeecgBoot 2.0.2 版本发布,基于SpringBoot快速开发平台
  18. 【buaa机试题】机场登机口调整
  19. 开源网校系统+源代码分享
  20. 超详细的张飞硬件第七部开关电源读书笔记02

热门文章

  1. Android_多媒体
  2. 一网打尽Redis Lua脚本并发原子组合操作
  3. springboot redis做缓存
  4. 归并算法Python3.7实现及时间复杂度分析
  5. AI:拿来主义——预训练网络(一)
  6. python绘制3d球体网格散点图
  7. java radiogroup_android RadioGroup实现单选以及默认选中 | 学步园
  8. js replace方法解决全部替换的问题(替换目标字符串 可以多个)
  9. YUV4:2:2和YUV4:2:0 区别
  10. 记一次因nofile参数设置错误而引起的服务器维修风波