unique-paths-II
阿新 • • 發佈:2020-07-24
繼續思考題目"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 }