1. 程式人生 > 實用技巧 >unique-paths-II

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 }