The feeling of depending on oneself and AC is just great.
1 #include <iostream> 2 #include <vector> 3 using namespace std; 4 class Solution { 5 public: 6 int uniquePathsWithObstacles(vector<vector<int> > &obstacleGrid) { 7 vector<vector<int>> d(obstacleGrid.size(), vector<int>(obstacleGrid[0].size(), 0)); 8 for (int i = 0; i < d.size(); i++) 9 { 10 if (obstacleGrid[i][0] != 1) 11 d[i][0] = 1; 12 else break; 13 } 14 for (int i = 0; i < d[0].size(); i++) 15 { 16 if (obstacleGrid[0][i] != 1) 17 d[0][i] = 1; 18 else break; 19 } 20 for (int i = 1; i < obstacleGrid.size(); i++) 21 { 22 for (int j = 1; j < obstacleGrid[i].size(); j++) 23 { 24 if (obstacleGrid[i][j] != 1)/////////////////////////////////////// 25 { 26 d[i][j] = d[i - 1][j] + d[i][j - 1]; 27 } 28 //cout << d[i][j] << " "; 29 } 30 //cout << endl; 31 } 32 return d[obstacleGrid.size()-1][obstacleGrid[0].size()-1]; 33 } 34 }; 35 int main() 36 { 37 Solution s; 38 vector<vector<int>> obstacleGrid; 39 int a0[] = { 0, 0, 0 }; 40 int a1[] = { 0, 1, 0 }; 41 int a2[] = { 0, 0, 0 }; 42 obstacleGrid.push_back(vector<int>(a0, a0 + 3)); 43 obstacleGrid.push_back(vector<int>(a1, a1 + 3)); 44 obstacleGrid.push_back(vector<int>(a2, a2 + 3)); 45 46 //print vector<vector<int>> 47 //for (int i = 0; i < obstacleGrid.size(); i++) 48 //{ 49 // for (int j = 0; j < obstacleGrid[i].size(); j++) 50 // { 51 // cout << obstacleGrid[i][j]<<" "; 52 // } 53 // cout << endl; 54 //} 55 cout << s.uniquePathsWithObstacles(obstacleGrid) << endl; 56 return 0; 57 }