有一个机器人的位于一个 m × n 个网格左上角。
机器人每一时刻只能向下或者向右移动一步。机器人试图达到网格的右下角。
问有多少条不同的路径?
n和m均不超过100
且答案保证在32位整数可表示范围内。
样例
Example 1:
Input: n = 1, m = 3
Output: 1
思路
从数学的角度考虑, 机器人一共需要向两个方向各走 m - 1, n - 1 步,即总共要走m + n - 2步,选取其中的m - 1步往右走即可。
所以答案就是
class Solution(object):
def uniquePaths(self, m, n):
"""
:type m: int
:type n: int
:rtype: int
"""
# C(m + n - 2) (m - 1)
k = m + n - 2
t = m - 1
right = 1
for i in range(0, t):
left *= k - i#m - 1的阶乘
down = 1
for i in range(1, m):
down *= i#(m + n - 2)的阶乘
# print right, down
return right // down
c=Solution()
d=c.uniquePaths(4,3)
print(d)
结果 10