1 class Solution 
 2 {
 3 public:
 4     int uniquePathsWithObstacles(vector<vector<int>>& obstacleGrid) 
 5     {
 6         int szcol=obstacleGrid.size();
 7         int szrow=obstacleGrid[0].size();
 8         vector<int> row(szrow,0);
 9         vector<int> col(szcol,0);
10         for(int i=0;i<szrow;i++)
11         {
12             if(obstacleGrid[0][i]==1)
13                 break;
14             row[i]=1;
15         }
16         for(int j=0;j<szcol;j++)
17         {
18             if(obstacleGrid[j][0]==1)
19                 break;
20             col[j]=1;
21         }
22         for(int j=1;j<szcol;j++)
23         {
24             row[0]=col[j];
25             for(int i=1;i<szrow;i++)
26             {
27                 if(obstacleGrid[j][i]==0)
28                     row[i]=row[i]+row[i-1];
29                 else
30                     row[i]=0;
31             }
32         }
33         return row[szrow-1];
34     }
35 };

这个题核心思路和路径问题一样,不同的是障碍处的当前路径要置为0,并且只有遇到非障碍才计算当前可达路径数。

posted on 2018-07-20 19:58  高数考了59  阅读(116)  评论(0)    收藏  举报