动态规划part02 62. 不同路径 63. 不同路径 II
class Solution {
public : int uniquePaths ( int m, int n) { vector< vector< int >> dp ( m, vector ( n, 0 ) ) ; for ( int i = 0 ; i< dp. size ( ) ; i++ ) dp[ i] [ 0 ] = 1 ; for ( int j = 0 ; j< dp[ 0 ] . size ( ) ; j++ ) dp[ 0 ] [ j] = 1 ; for ( int i = 1 ; i< dp. size ( ) ; i++ ) { for ( int j = 1 ; j< dp[ 0 ] . size ( ) ; j++ ) { dp[ i] [ j] = dp[ i- 1 ] [ j] + dp[ i] [ j- 1 ] ; } } return dp[ dp. size ( ) - 1 ] [ dp[ 0 ] . size ( ) - 1 ] ; }
} ;
class Solution {
public : int uniquePathsWithObstacles ( vector< vector< int >> & obstacleGrid) { vector< vector< int >> dp ( obstacleGrid. size ( ) , vector ( obstacleGrid[ 0 ] . size ( ) , 0 ) ) ; for ( int i = 0 ; i< dp. size ( ) && obstacleGrid[ i] [ 0 ] == 0 ; i++ ) dp[ i] [ 0 ] = 1 ; for ( int j = 0 ; j< dp[ 0 ] . size ( ) && obstacleGrid[ 0 ] [ j] == 0 ; j++ ) dp[ 0 ] [ j] = 1 ; for ( int i = 1 ; i< dp. size ( ) ; i++ ) { for ( int j = 1 ; j< dp[ 0 ] . size ( ) ; j++ ) { if ( obstacleGrid[ i] [ j] == 1 ) continue ; dp[ i] [ j] = dp[ i- 1 ] [ j] + dp[ i] [ j- 1 ] ; } } return dp[ dp. size ( ) - 1 ] [ dp[ 0 ] . size ( ) - 1 ] ; }
} ;