现在他是一个dp题- -
const int MAXN = 100 + 10;
int n, m;
int dp[MAXN][MAXN];
int getAns(int r, int c, vector<vector<int> > & grid){
int & ret = dp[r][c];
if(ret != -1)
return ret;
if(grid[r][c] == 1)
return ret = 0;
ret = 0;
if(r - 1 >= 0)
ret += getAns(r - 1, c, grid);
if(c - 1 >= 0)
ret += getAns(r, c - 1, grid);
return ret;
}
class Solution {
public:
int uniquePathsWithObstacles(vector<vector<int> > &grid) {
// Start typing your C/C++ solution below
// DO NOT write int main() function
memset(dp, 0xff, sizeof(dp));
dp[0][0] = grid[0][0] != 1;
n = grid.size();
m = grid[0].size();
return getAns(n - 1, m - 1, grid);
}
};