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];
}
}