class Solution { public: int uniquePathsWithObstacles(vector<vector<int> > &obstacleGrid) { vector<vector<int> >& dp = obstacleGrid; if (dp.empty() || dp[0].empty()) return 0; dp[0][0] = (dp[0][0] == 1) ? 0 : 1; for (int i=1; i<dp.size(); i++) { dp[i][0] = (dp[i][0] == 1) ? 0 : dp[i-1][0]; } for (int i=1; i<dp[0].size(); i++) { dp[0][i] = (dp[0][i] == 1) ? 0 : dp[0][i-1]; } for (int i=1; i<dp.size(); i++) { for (int j=1; j<dp[i].size(); j++) { dp[i][j] = (dp[i][j] == 1) ? 0 : dp[i-1][j] + dp[i][j-1]; } } return dp.back().back(); } };
和Unique Paths一样只不过这回不太能用公式直接得出了,在动态规划时依据提供的障碍信息确定如何选取子问题的解,方便起见直接将入参用作dp数组
LeetCode Unique Paths II,布布扣,bubuko.com
原文:http://www.cnblogs.com/lailailai/p/3601210.html