题目描述[原题链接][https://leetcode-cn.com/problems/unique-paths-ii/]
一个机器人位于一个 m x n 网格的左上角 (起始点在下图中标记为“Start” )。
机器人每次只能向下或者向右移动一步。机器人试图达到网格的右下角(在下图中标记为“Finish”)。
现在考虑网格中有障碍物。那么从左上角到右下角将会有多少条不同的路径?
网格中的障碍物和空位置分别用 1
和 0
来表示。
说明:*m* 和 n 的值均不超过 100。
示例 1:
1 | 输入: |
算法描述
这题解答分三部分,第一行,第一列,其他部分,观察可以发现其他部分存在dp
关系式:dp[i][j] = dp[i-1][j]+dp[i][j-1]
,所以先求出前两部分结果即可,求解分两种情况,当前节点为障碍物和当前节点不是障碍物,首先判断起点是否是障碍物,即is 1 to 0,else to 1
,最后的道路条数即dp[r-1][c-1]
;
C++代码
1 | class Solution { |
Java代码
1 | class Solution { |