class Solution {//比较简单的动态规划题 public int uniquePaths(int m, int n) { int[][] dp =new int[m][n]; for(int i=0;i<=m-1;i++) { for(int j=0;j<=n-1;j++) { if(i==0 && j==0) { dp[i][j]=1; } else if(i==0) { dp[i][j]=dp[i][j-1]; } else if(j==0) { dp[i][j]=dp[i-1][j]; } else dp[i][j]=dp[i-1][j]+dp[i][j-1]; } } return dp[m-1][n-1]; } }
class Solution { public int uniquePathsWithObstacles(int[][] obstacleGrid) { int m = obstacleGrid.length; int n = obstacleGrid[0].length; int [][]dp =new int[m+1][n+1]; for(int i=0;i<=m-1;i++) { for(int j=0;j<=n-1;j++) { if(obstacleGrid[i][j]==1) { dp[i][j]=0; } else { if(i==0 && j==0) { dp[i][j]=1; } else if(j==0) { dp[i][j]=dp[i-1][j]; } else if(i==0) { dp[i][j]=dp[i][j-1]; } else { dp[i][j]=dp[i-1][j]+dp[i][j-1]; } } } } return dp[m-1][n-1]; } }