继续思考题目"Unique Paths":
如果在图中加入了一些障碍,有多少不同的路径?
分别用0和1代表空区域和障碍
例如
下图表示有一个障碍在3*3的图中央。
[↵ [0,0,0],↵ [0,1,0],↵ [0,0,0]↵]有2条不同的路径
备注:m和n不超过100.
二维数组动态规划解法:
1 import java.util.*; 2 3 4 public class Solution { 5 /** 6 * 7 * @param obstacleGrid int整型二维数组 8 * @return int整型 9 */ 10 public int uniquePathsWithObstacles (int[][] obstacleGrid) { 11 int m=obstacleGrid.length; 12 int n=obstacleGrid[0].length; 13 int[][] dp=new int[m][n]; 14 boolean flag=true; 15 for(int i=0;i<m;i++){ 16 if(obstacleGrid[i][0]==0&&flag){ 17 dp[i][0]=1; 18 }else{ 19 flag=false; 20 break; 21 } 22 } 23 flag=true; 24 for(int i=0;i<n;i++){ 25 if(obstacleGrid[0][i]==0&&flag){ 26 dp[0][i]=1; 27 }else{ 28 flag=false; 29 break; 30 } 31 } 32 for(int i=1;i<m;i++){ 33 for(int j=1;j<n;j++){ 34 if(obstacleGrid[i][j]==0){ 35 dp[i][j]=dp[i-1][j]+dp[i][j-1]; 36 } 37 } 38 } 39 return dp[m - 1][n - 1]; 40 } 41 }