首页 > 其他 > 详细

1391 检查是否存在有效路径 DFS

时间:2021-09-07 16:46:46      阅读:23      评论:0      收藏:0      [点我收藏+]

技术分享图片

 

 

class Solution {
public:
    bool res=false;
    bool hasValidPath(vector<vector<int>>& grid) {
        vector<vector<bool>> visit(grid.size(),vector<bool>(grid[0].size(),false));
        DFS(grid,visit,0,0);
        return res;
    }
    void DFS(vector<vector<int>>& grid,vector<vector<bool>>& visit,int i,int j)
    {
        visit[i][j]=true;
        if(i==grid.size()-1 && j==grid[0].size()-1)
        {
            res=true;
            return;
        }
        if(grid[i][j]==1)
        {
            if(j+1<grid[0].size() && !visit[i][j+1] && (grid[i][j+1]==1 ||grid[i][j+1]==3 || grid[i][j+1]==5))
            {
                DFS(grid,visit,i,j+1);
            }
            if(j-1>=0 && !visit[i][j-1] && (grid[i][j-1]==1 || grid[i][j-1]==4 || grid[i][j-1]==6))
            {
                DFS(grid,visit,i,j-1);
            }
        }
        if(grid[i][j]==2)
        {
            if(i+1<grid.size() && !visit[i+1][j] && (grid[i+1][j]==2 || grid[i+1][j]==5 || grid[i+1][j]==6))
            {
                DFS(grid,visit,i+1,j);
            }
            if(i-1>=0 && !visit[i-1][j] && (grid[i-1][j]==2 ||grid[i-1][j]==3 || grid[i-1][j]==4))
            {
                DFS(grid,visit,i-1,j);
            }
        }
        if(grid[i][j]==3)
        {
            if(i+1<grid.size() && !visit[i+1][j] && (grid[i+1][j]==2 ||grid[i+1][j]==5 || grid[i+1][j]==6))
            {
                DFS(grid,visit,i+1,j);
            }
            if(j-1>=0 && !visit[i][j-1] && (grid[i][j-1]==1 || grid[i][j-1]==4 || grid[i][j-1]==6 ))
            {
                DFS(grid,visit,i,j-1);
            }
        }
        if(grid[i][j]==4)
        {
            if(i+1<grid.size() && !visit[i+1][j] && (grid[i+1][j]==2 ||grid[i+1][j]==5 || grid[i+1][j]==6))
            {
                DFS(grid,visit,i+1,j);
            }
            if(j+1<=grid[0].size() && !visit[i][j+1] && (grid[i][j+1]==1 || grid[i][j+1]==3 || grid[i][j+1]==5))
            {
                DFS(grid,visit,i,j+1);
            }
        }
        if(grid[i][j]==5)
        {
            if(i-1>=0 && !visit[i-1][j] && (grid[i-1][j]==2 ||grid[i-1][j]==3 || grid[i-1][j]==4))
            {
                DFS(grid,visit,i-1,j);
            }
            if(j-1>=0 && !visit[i][j-1] && (grid[i][j-1]==1 || grid[i][j-1]==4 || grid[i][j-1]==6 ))
            {
                DFS(grid,visit,i,j-1);
            }
            
        }
        if(grid[i][j]==6)
        {
            if(i-1>=0 && !visit[i-1][j] && (grid[i-1][j]==2 ||grid[i-1][j]==3 || grid[i-1][j]==4))
            {
                DFS(grid,visit,i-1,j);
            }
            if(j+1<=grid[0].size() && !visit[i][j+1] && (grid[i][j+1]==1 || grid[i][j+1]==3 || grid[i][j+1]==5))
            {
                DFS(grid,visit,i,j+1);
            }
        }
        visit[i][j]=false;
        return;
    }
};

 

1391 检查是否存在有效路径 DFS

原文:https://www.cnblogs.com/libin123/p/15237683.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!