unique paths
class Solution { public: int rows; int cols; int path(int m,int n, vector<vector<int>> &v) { if( m==rows-1 && n == cols-1 ) return 1; if( v[m][n] != INT_MAX ) return v[m][n]; int way1 = 0,way2 = 0; if( m < rows - 1 ) way1 = path( m+1,n,v ); if( n < cols - 1 ) way2 = path(m,n+1,v); v[m][n] = way1+ way2; return v[m][n]; } int uniquePaths(int m, int n) { // Start typing your C/C++ solution below // DO NOT write int main() function if( m==0 && n == 0 ) return 0; rows = m; cols = n; vector<vector<int>> v( m, vector<int>(n,INT_MAX)); return path(0,0,v); } };
加入障碍
1 class Solution { 2 public: 3 int rows; 4 int cols; 5 int path(int m,int n, vector<vector<int>> &v, 6 vector<vector<int>> &obstacleGrid) 7 { 8 if( obstacleGrid[m][n] == 1 ) return 0; 9 if( m==rows-1 && n == cols-1 ) return 1; 10 if( v[m][n] != INT_MAX ) return v[m][n]; 11 int way1 = 0,way2 = 0; 12 if( m < rows - 1 && obstacleGrid[m+1][n] == 0 ) 13 way1 = path( m+1,n,v,obstacleGrid ); 14 if( n < cols - 1 && obstacleGrid[m][n+1] == 0) 15 way2 = path(m,n+1,v,obstacleGrid); 16 17 v[m][n] = way1+ way2; 18 return v[m][n]; 19 20 } 21 int uniquePathsWithObstacles(vector<vector<int> > &obstacleGrid) { 22 // Start typing your C/C++ solution below 23 // DO NOT write int main() function 24 25 rows = obstacleGrid.size(); 26 if( rows == 0) return 0; 27 cols = obstacleGrid[0].size(); 28 if( cols == 0) return 0; 29 30 if( obstacleGrid[rows-1][cols-1] == 1 ) return 0; 31 32 vector<vector<int>> v( rows, vector<int>(cols,INT_MAX)); 33 34 return path(0,0,v,obstacleGrid); 35 36 } 37 };
posted on 2013-07-04 14:43 jumping_grass 阅读(116) 评论(0) 收藏 举报
浙公网安备 33010602011771号