• 剑指 Offer 12. 矩阵中的路径


    • 题目描述

    • 是一道很常见的深搜题目,不过里面要考虑一些边界问题,比如走过的路径是不能再次走入的,所以我这里我自己的
      代码想到是利用一个新的二维的数组,记录走过的路径,不过题解的直接将原二维数组中的路径隐藏,这样可以节省
      内存空间,等搜索完,再将路径重新赋值进去,tql,剩下就没啥坑点了,直接四个方向搜索,到递归出口就结束

    class Solution {
    public:
        vector<vector<int>> v;
        bool exist(vector<vector<char>>& board, string word) {
                rows=board.size();
                lines=board[0].size();
                for(int i=0;i<rows;i++)
                {
                    for(int j=0;j<lines;j++)
                    {
                        if(dfs(board,word,i,j,0))
                        {
                            return true;
                        }
                    }
                }
                return false;
    
        }
    private:
        int rows; //行数
        int lines; //列数
        bool dfs(vector<vector<char>>& board,string word,int x,int y,int k)
        {
            if(x>=rows||x<0||y>=lines||y<0||board[x][y]!=word[k])
            {
                return false;
            }
            if(k==word.size()-1)
            {
                return true;
            }
            board[x][y]='';
            int dx[]={-1,0,1,0};
            int dy[]={0,1,0,-1};
            for(int q=0;q<4;q++)
            {
                int m=x+dx[q];
                int n=y+dy[q];
                if(dfs(board,word,m,n,k+1))
                {
                    return true;
                }
            }
            board[x][y]=word[k];
            return false;
            
        }
    };
    
  • 相关阅读:
    毕业了!
    mesos无执行器启动docker
    docker run option
    maintenance
    virtualenv
    multi role
    排序之插入排序
    DLU-1064 美声葱
    codeforces-1025 A Doggo Recoloring
    codeforces-1027 C Minimum Value Rectangle
  • 原文地址:https://www.cnblogs.com/YenKoc/p/14333725.html
Copyright © 2020-2023  润新知