描述
有一个机器人的位于一个 m × n 个网格左上角。
机器人每一时刻只能向下或者向右移动一步。机器人试图达到网格的右下角。
问有多少条不同的路径?
n和m均不超过100
您在真实的面试中是否遇到过这个题? 是
样例
给出 m = 3
和 n = 3
, 返回 6
.
给出 m = 4
和 n = 5
, 返回 35
.
这一题也是典型动态规划题,因为求解方案数量,具体动态规划的思想可以看我上一篇文章:https://blog.csdn.net/wenqiwenqi123/article/details/81281703
那么这一题的思路就是:到某个结点的方案数量=它上方结点的方案数+它左方结点的方案数
别忘了初始化状态的时候,第一行和第一列所有结点的方案数只有1.
代码如下:
class Solution:
"""
@param m: positive integer (1 <= m <= 100)
@param n: positive integer (1 <= n <= 100)
@return: An integer
"""
def uniquePaths(self, m, n):
# write your code here
map=[[0 for i in range(n)] for j in range(m)]
for i in range(n):
map[0][i]=1
for i in range(m):
map[i][0] = 1
for i in range(1,m):
for j in range(1,n):
map[i][j]=map[i-1][j]+map[i][j-1]
return map[m-1][n-1]
s = Solution()
print(s.uniquePaths(4,5))