题目考察的知识点:动态规划路径问题
题目解答方法的文字分析:先创建一个dp表,然后填表,当路径有障碍物时,那么这条路不通,dp[i][j]等于0;通的话,就将两条相同的路相加。
本题解析所用的编程语言:c++
class Solution { public: /** * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可 * * * @param cows int整型vector<vector<>> * @return int整型 */ int uniquePathsWithObstacles(vector<vector<int>>& cows) { // write code here int m = cows.size(), n = cows.size(); vector<vector<int>> dp(m + 1, vector<int>(n + 1)); dp[0][1] = 1; for (int i = 1; i <= m; ++i) for (int j = 1; j <= n; ++j) if (cows[i - 1][j - 1] == 0) dp[i][j] = dp[i - 1][j] + dp[i][j - 1]; return dp[m][n]; } };