题目解析:
题目中机器人只能向下或向右移动,画个简单的图示意,由上图可见,绿色的点可由两条路径到达,一个是从上面那条蓝色的点路径,一个是从左边那条紫色的点路径,同样地,蓝色的点也可由上面一条白色的点路径和左边一条红色的点路径到。。。依次,可以发现一个位置可以由左边路径到达也可由上边路径到达,那能够达到这个位置的路径就是左边路径与上面路径的和!接下来写代码实现就行了。
class Solution(object):
def uniquePaths(self, m, n):
"""
:type m: int
:type n: int
:rtype: int
"""
if m == 1 or n == 1: # 只能一直向下或向右走,只有一条路径
return 1
H = [[0] * n for i in range(m)] # 定义一个矩阵,计算每一个位置的路径
for i in range(m): # 初始化第一列的位置的路径为1
H[i][0] = 1
for i in range(n): # 初始化第一行的位置的路径为1
H[0][i] = 1
H[0][0] = 0 # 开始的位置路径为0
for i in range(1, m): # 除上面的情况以外,其余的位置的路径都是 坐边位置的路径加上上边位置的路径
for j in range(1, n):
H[i][j] = H[i-1][j] + H[i][j-1]
return H[m-1][n-1]