dfs::矩阵路径

ACwing23

方法

dfs
开始以为是dijkstra没想到是dfs

学习

冲这个题中看出,dfs用的是标记,不一定是visited[],能标记,递归就行

代码

bool hasPath(vector<vector<char>>& matrix, string &str) {
        for(int i = 0;i<matrix.size();i++){
            for(int j  = 0;j<matrix[0].size();j++){
                if(dfs(matrix,str,0,i,j))
                return true;
            }
        }
        return false;
    }
    bool dfs(vector<vector<char>>& matrix, string &str,int u,int x,int y){
        if(matrix[x][y]!=str[u])return false;
        if(u==str.size()-1)return true;
        int dx[] = {-1,0,1,0};
        int dy[] = {0,1,0,-1};
        int t  = matrix[x][y];
        matrix[x][y] = '*';
        for(int i = 0;i<4;i++){
            int a = x+dx[i];
            int b = y+dy[i];
            if(a>=0&&a<matrix.size()&&b>=0&&b<matrix[0].size()){
                if(dfs(matrix,str,u+1,a,b)) return true;
            }
        }
        matrix[x][y] = t;
        return false;

    }
posted @ 2022-11-15 08:38  壹剑霜寒十四州  阅读(10)  评论(0编辑  收藏  举报