Leetcode Tencent 50 Task 26 62. Unique Paths
描述
一个机器人位于一个 网格的左上角 (起始点在下图中标记为“Start” )。
机器人每次只能向下或者向右移动一步。机器人试图达到网格的右下角(在下图中标记为“Finish”)。
问总共有多少条不同的路径?

例如,上图是一个7 x 3 的网格。有多少可能的路径?
说明:m 和 n 的值均不超过 100。
示例 1:
1 | 输入: m = 3, n = 2 |
示例 2:
1 | 输入: m = 7, n = 3 |
来源:力扣(LeetCode)
链接:62. Unique Paths
解题思路
刚刚在MOOC看了北京大学郭炜老师关于数字三角形的题目,这道题的思路基本类似。
我们令MaxPaths[i][j]为到达i,j的最多路径,则状态转移方程为:MaxPaths[i][j]=MaxPaths[i-1][j] + MaxPaths[i][j-1],考虑下边界条件,对于第一行或者第一列,根据移动的规则,只能够一直往右或者一直往下,只有一种可能的路径,即MathPaths[0][j] = MaxPaths[i][0] = 1
代码可以有两个写法,一种递归的写法,一种是迭代的写法。不过提交以后递归的写法超时了……
代码
解法一:递归解法,超时
1 | int uniquePaths(int m, int n) |
解法二:迭代解法,
1 | int uniquePaths(int m, int n) |