Facebook
From hasmit, 1 Year ago, written in C++.
Embed
Download Paste or View Raw
Hits: 52
  1. class Solution
  2. {
  3.     public:
  4.    
  5.     bool solve(vector<vector<int>>grid,int ir,int ic,int row,int col,vector<vector<int>>memo){
  6.        
  7.         if(!(ir>=0 && ir<row && ic>=0 && ic<col)) return false;
  8.        
  9.         if(memo[ir][ic]==0)return false;
  10.  
  11.         if(grid[ir][ic]==2){
  12.             memo[ir][ic]=1;
  13.             return true;
  14.         }
  15.        
  16.         if(grid[ir][ic]==0){
  17.             memo[ir][ic]=0;
  18.             return false;
  19.         }
  20.        
  21.         int temp=grid[ir][ic];
  22.         grid[ir][ic]=0;
  23.        
  24.         bool a=solve(grid,ir+1,ic,row,col,memo);
  25.         bool b=solve(grid,ir-1,ic,row,col,memo);
  26.         bool c=solve(grid,ir,ic+1,row,col,memo);
  27.         bool d=solve(grid,ir,ic-1,row,col,memo);
  28.        
  29.         grid[ir][ic]=temp;
  30.        
  31.         bool ans = a||b||c||d;
  32.        
  33.         if(ans)memo[ir][ic]=1;
  34.         else memo[ir][ic]=0;
  35.        
  36.         return ans;
  37.     }
  38.     //Function to find whether a path exists from the source to destination.
  39.     bool is_Possible(vector<vector<int>>& grid)
  40.     {
  41.         //code here
  42.         int row = grid.size();
  43.         int col = grid[0].size();
  44.        
  45.         int ir,ic;
  46.        
  47.         vector<vector<int>>memo(501,vector<int>(501,-1));
  48.        
  49.         for(int i=0;i<row;i++){
  50.             for(int j=0;j<col;j++){
  51.                 if(grid[i][j]==1){
  52.                     ir=i;
  53.                     ic=j;
  54.                 }
  55.             }
  56.         }
  57.         return solve(grid,ir,ic,row,col,memo);
  58.     }
  59. };