有障碍的二维数组走法种数
unique-paths-ii
http://www.nowcoder.com/questionTerminal/3cdf08dd4e974260921b712f0a5c8752
public class Solution {
public int uniquePathsWithObstacles (int[][] obstacleGrid) {
// write code here
/其他地方与动态规划类似,有障碍的地方设为零就好/
int m =obstacleGrid.length;
int n = obstacleGrid[0].length;
if(obstacleGrid[0][0]==1) return 0;
int [][] dp = new int [m][n];
for(int i=0;i<m;++i){
for(int j=0;j<n;++j){
/第一个节点为1,第一列和第一行也为1种走法。再分别考虑有障碍时还有不是
第一行和第一例的情况/
if(i==0&&j==0) dp[i][j]=1;
if(i==0&&j!=0) dp[i][j]=dp[i][j-1];
if(j==0&&i!=0) dp[i][j]=dp[i-1][j];
if(i!=0&&j!=0) dp[i][j]=dp[i-1][j]+dp[i][j-1];
if(obstacleGrid[i][j]==1) dp[i][j]=0;
}
}
return dp[m-1][n-1];
}
}