1 class Solution 2 { 3 public: 4 int uniquePathsWithObstacles(vector<vector<int>>& nums) 5 { 6 int m = nums.size(); 7 int n = nums[0].size(); 8 9 //起点或终点被堵死,直接返回0; 10 if(nums[0][0] == 1 || nums[m - 1][n - 1] == 1) return 0; 11 12 vector<vector<long long>> dp(m,vector<long long>(n,0)); 13 for(int i = 0;i < m;i ++) //初始化第一列 14 { 15 if(nums[i][0] == 0) dp[i][0] = 1; 16 else break; 17 } 18 19 for(int j = 1;j < n;j ++) //初始化第一行 20 { 21 if(nums[0][j] == 0) dp[0][j] = 1; 22 else break; 23 } 24 25 for(int i = 1;i < m;i ++) 26 { 27 for(int j = 1;j < n;j ++) 28 { 29 if(nums[i][j] == 0) dp[i][j] = dp[i - 1][j] + dp[i][j - 1]; 30 } 31 } 32 return dp[m - 1][n - 1]; 33 } 34 };
原文:https://www.cnblogs.com/yuhong1103/p/12526968.html