62. 不同路径
题目:
一个机器人位于一个 m x n 网格的左上角 (起始点在下图中标记为 “Start” )。
机器人每次只能向下或者向右移动一步。机器人试图达到网格的右下角(在下图中标记为 “Finish” )。
问总共有多少条不同的路径?
提示:
1 <= m, n <= 100
题目数据保证答案小于等于 2 * 109
解题思路
先把m*n的矩阵填满第一行第一列置为1,然后再观察,例如矩阵的[1][1]坐标,就只有2条路径,分别是上面和下面,再看[2][1],也就是上面的坐标的路径数和左边坐标的路径数,可以通过下面的图来观察。![在这里插入图片描述](https://img-blog.csdnimg.cn/20210316120244398.jpg?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl80MjUxMDY0OA==,size_16,color_FFFFFF,t_70)
代码如下:
class Solution(object):
def uniquePaths(self, m, n):
"""
:type m: int
:type n: int
:rtype: int
"""
index = []
for i in range(m):#全部置为0
index.append([0]*n)
for i in range(m):#第一行置1,代表1条路径
index[i][0] = 1
for i in range(n):#第一列置1,代表1条路径
index[0][i] = 1
for i in range(1,m):#便利行
for j in range(1,n):#便利列
index[i][j] = index[i-1][j]+index[i][j-1]#路径相加
return index[m-1][n-1]#返回最后一个坐标,就是所有路径