Simple Recursion + Memoization Solution II DP II Faster than 100.00%
Same Approach Like Unique Paths\nSolution\n\nclass Solution {\npublic:\n    int dp[101][101];\n    int solve(vector<vector<int>>& obstacleGrid,int x,int y,int m
Same Approach Like [Unique Paths](https://leetcode.com/problems/unique-paths/)\n[Solution](https://leetcode.com/problems/unique-paths/discuss/2058560/Simple-Recursion-%2B-Memoization-Solution-II-DP-II-Faster-than-100.00)\n```\nclass Solution {\npublic:\n    int dp[101][101];\n    int solve(vector<vector<int>>& obstacleGrid,int x,int y,int m,int n)\n    {\n        if(x>=m || y>=n || obstacleGrid[x][y]==1)\n            return 0;\n        if(x==m-1 && y==n-1)\n            return 1;\n        \n        if(dp[x][y]!=-1)\n            return dp[x][y];\n        else\n            dp[x][y] = solve(obstacleGrid,x+1,y,m,n)+solve(obstacleGrid,x,y+1,m,n);\n        return dp[x][y];\n    }\n    int uniquePathsWithObstacles(vector<vector<int>>& obstacleGrid) {\n        int m=obstacleGrid.size();\n        int n=obstacleGrid[0].size();\n        memset(dp,-1,sizeof(dp));\n        return solve(obstacleGrid,0,0,m,n);\n    }\n};\n```\n\n**Please Upvote** if you liked the approach.
['Dynamic Programming', 'Recursion', 'Memoization', 'C']