leetcode-unique paths 2

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 }

 

posted @ 2014-09-30 10:25  Ryan in C++  阅读(144)  评论(0编辑  收藏  举报