M * N的方格,一个机器人从左上走到右下,只能向右或向下走。
有多少种不同的走法?
注意:给定 M, N 是一个正整数。
示例
输入: 1行, 2个数M,N,中间用空格隔开。(2 <= m,n <= 1000)
输出: 输出走法的数量。
输入样例
2 3
输出样例
3
#解一
def solve(M: int, N: int) -> int:
if M == 1 or N == 1:
return 1
return solve(M-1, N) + solve(M, N-1)
#解二
def solve(M: int, N: int) -> int:
# 生成一个 M 行, N列的二维数组
dp = [[None for j in range(N)]for i in range(M)]
# 初始化第一行
for i in range(N):
dp[0][i] = 1
# 初始化第一列
for i in range(M):
dp[i][0] = 1
for i in range(1, M):
for j in range(1, N):
dp[i][j] = dp[i-1][j] + dp[i][j-1]
return dp[-1][-1]