존재하는 날씨 경로 찾기 GeeksForGeeks

0, 1, 2, 3으로 채워진 크기 n*n의 그리드가 주어집니다. 소스에서 대상까지 가능한 경로가 있는지 확인합니다. 위, 아래, 오른쪽, 왼쪽으로 이동할 수 있습니다.
셀에 대한 설명은 다음과 같습니다.
  • 셀 1의 값은 소스를 의미합니다.
  • 셀 2의 값은 대상을 의미합니다.
  • 셀 3의 값은 빈 셀을 의미합니다.
  • 셀 0의 값은 벽을 의미합니다.
    참고: 단일 소스와 단일 대상만 있습니다.

  • 예 1:

    Input: grid = {{3,0,3,0,0},{3,0,0,0,3}
    ,{3,3,3,3,3},{0,2,3,0,0},{3,0,0,1,3}}
    Output: 0
    Explanation: The grid is-
    3 0 3 0 0 
    3 0 0 0 3 
    3 3 3 3 3 
    0 2 3 0 0 
    3 0 0 1 3 
    There is no path to reach at (3,1) i,e at 
    destination from (4,3) i,e source.
    


    해결책:

    class Solution
    {
        //Function to find whether a path exists from the source to destination.
        public boolean is_Possible(int[][] grid)
        {
            // Code here
            for(int i =0;i<grid.length;i++){
                for(int j =0;j<grid[0].length;j++){
                    if(grid[i][j]==1) {
                        return isDestinationPossible(grid,i,j);
                    }
                }
            }
            return false;
        }
        public boolean isDestinationPossible(int[][] grid, int i, int j){
            if(i<0 || i>=grid.length || j<0 || j>= grid[0].length ||
             grid[i][j]==0 || grid[i][j] ==-1) return false;
             if(grid[i][j] ==2) return true;
             int temp = grid[i][j];
             grid[i][j] = -1; //means this has been visited;
                     // up move
            return  isDestinationPossible(grid,i-1,j)||
                    // down move
             isDestinationPossible(grid,i+1,j) ||
                    // left move
             isDestinationPossible(grid,i,j-1) ||
                    // right move
             isDestinationPossible(grid,i,j+1);
    
        }
    }
    

    좋은 웹페이지 즐겨찾기