Advertisement
nikunjsoni

980

Apr 22nd, 2021
117
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 0.97 KB | None | 0 0
  1. class Solution {
  2. int ans=0;
  3. int dx[4] = {-1, 0, 0, 1};
  4. int dy[4] = {0, 1, -1, 0};
  5.    
  6. public:
  7.     int uniquePathsIII(vector<vector<int>>& grid) {
  8.         int startx, starty, count=0;
  9.         for(int i=0; i<grid.size(); i++)
  10.             for(int j=0; j<grid[i].size(); j++){
  11.                 if(grid[i][j] == 1)
  12.                     startx = i, starty = j;
  13.                 if(grid[i][j] != -1)
  14.                     count++;
  15.             }
  16.         dfs(startx, starty, grid, count-1);
  17.         return ans;
  18.     }
  19.    
  20.     void dfs(int x, int y, vector<vector<int>> &grid, int count){
  21.         if(x<0 || y<0 || x>=grid.size() || y>=grid[x].size() || grid[x][y]==-1) return;
  22.         if(!count && grid[x][y] == 2){
  23.             ans++;
  24.             return;
  25.         }
  26.         else{
  27.             int tmp = grid[x][y];
  28.             grid[x][y] = -1;
  29.             for(int i=0; i<4; i++)
  30.                 dfs(x+dx[i], y+dy[i], grid, count-1);
  31.             grid[x][y] = tmp;
  32.         }
  33.     }
  34. };
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement