当前位置:   article > 正文

力扣刷题(剑指 Offer 12. 矩阵中的路径)回溯记忆化搜索_力扣 记忆性回溯

力扣 记忆性回溯

剑指 Offer 12. 矩阵中的路径 - 力扣(LeetCode)

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

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

例如,在下面的 3×4 的矩阵中包含单词 "ABCCED"(单词中的字母已标出)。

 

思路:采用记忆化搜索与回溯相结合的思想来做,在回溯的过程中利用一个二维数组来记录当前已经走过的路防止重复走,而回溯是用来枚举所有可能情况相对较好的一种思路。

  1. //采用记忆化搜索与回溯相结合的思想来做
  2. //在回溯的过程中利用一个二维数组来记录当前已经走过的路防止重复走
  3. //而回溯是用来枚举所有可能情况相对较好的一种思路
  4. class Solution {
  5. public:
  6. bool exist(vector<vector<char>>& board, string word) {
  7. int m=board.size(),n=board[0].size();
  8. for(int i=0;i<m;++i){
  9. for(int j=0;j<n;++j){
  10. if(board[i][j]==word[0]){//如果首字母相同,执行检查函数
  11. vector<vector<bool>> check(m,vector<bool>(n,false));
  12. check[i][j]=true;
  13. if(check_way(board,i,j,word,1,check))return true;
  14. }
  15. }
  16. }
  17. return false;
  18. }
  19. private:
  20. bool check_way(vector<vector<char>>& board,int i,int j,string& str,int num,
  21. vector<vector<bool>>& check){
  22. if(num==str.size())return true;
  23. if(i>0&&!check[i-1][j]&&(board[i-1][j]==str[num])){
  24. check[i-1][j]=true;
  25. if(check_way(board,i-1,j,str,num+1,check))return true;
  26. else check[i-1][j]=false;//回溯,也即如果这个位置不成立则恢复至检查前的状态
  27. }
  28. if(i<board.size()-1&&!check[i+1][j]&&(board[i+1][j]==str[num])){
  29. check[i+1][j]=true;
  30. if(check_way(board,i+1,j,str,num+1,check))return true;
  31. else check[i+1][j]=false;
  32. }
  33. if(j>0&&!check[i][j-1]&&(board[i][j-1]==str[num])){
  34. check[i][j-1]=true;
  35. if(check_way(board,i,j-1,str,num+1,check))return true;
  36. else check[i][j-1]=false;
  37. }
  38. if(j<board[0].size()-1&&!check[i][j+1]&&(board[i][j+1]==str[num])){
  39. check[i][j+1]=true;
  40. if(check_way(board,i,j+1,str,num+1,check))return true;
  41. else check[i][j+1]=false;
  42. }
  43. return false;
  44. }
  45. };

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/IT小白/article/detail/590409
推荐阅读
相关标签
  

闽ICP备14008679号