#两种方法: #输入 list1=[int(x) for x in input().split()] n,m=list1[0],list1[1] #第一种:动态规划 # 初始化dp数组 dp = [[0] * (n + 1) for _ in range(m + 1)] #注意不要使用dp=[[0]*(n+1)]*(m+1),会导致每个子序列不独立 # 设置边界 dp[0][0]=1 for x in range(1,n+1): dp[0][x]=1 for y in range(1,m+1): dp[y][0]=1 for x in range(1, n + 1): for y in range(1, m + 1): dp[y][x] = dp[y - 1][x] + dp[y][x- 1] print(dp[m][n]) #第二种方法:递归 def f(x,y): if x < 0 or y < 0: return 0 elif x == 0 or y == 0: return 1 else: return f(x-1,y)+f(x,y-1) print(f(m,n)