class Solution {public int uniquePaths(int m, int n) {int[][] dp=new int[m][n];//记录到每个格子有多少种路径for(int i=0;i<m;i++) dp[i][0]=1;for(int j=0;j<n;j++) dp[0][j]=1;//初始化for(int i=1;i<m;i++){for(int j=1;j<n;j++){dp[i][j]=dp[i-1][j]+dp[i][j-1];}}return dp[m-1][n-1];//注意要-1,从0开始遍历的}
}
class Solution {public int uniquePathsWithObstacles(int[][] obstacleGrid) {int rows=obstacleGrid.length;int cols=obstacleGrid[0].length;int[][] dp=new int[rows][cols];for(int i=0;i<rows;i++){if(obstacleGrid[i][0]==1){//遇到障碍,后面都初始化不了,默认为0break;}else dp[i][0]=1;}for(int j=0;j<cols;j++){if(obstacleGrid[0][j]==1){//遇到障碍,后面都初始化不了,默认为0break;}else dp[0][j]=1;}for(int i=1;i<rows;i++){for(int j=1;j<cols;j++){if(obstacleGrid[i][j]==1){//障碍无法到达dp[i][j]=0;}else dp[i][j]=dp[i-1][j]+dp[i][j-1];}}return dp[rows-1][cols-1];}
}