unique-paths-II

继续思考题目"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 }
原文地址:https://www.cnblogs.com/Susie2world/p/13372678.html