有一个X*Y的网格,小团要在此网格上从左上角到右下角,只能走格点且只能向右或向下走。请设计一个算法,计算小团有多少种走法。给定两个正整数int x,int y,请返回小团的走法数目。
def multiplication(a): if a == 1: return 1 else: return a * multiplication(a - 1) X, Y = map(int, input().split()) print(int(multiplication(X + Y) / (multiplication(X) * multiplication(Y))))
"""" 考虑动态规划 设dp[x][y]为x*y的网格,每次只能向两个方向,有以下规律: dp[i][j] = dp[i - 1][j] + dp[i][j - 1] 边界条件为 dp[i][j]=1,(当i=0或j=0) """ if __name__ == "__main__": x, y = map(int, input().strip().split()) dp = [[1] * (y + 1) for _ in range(x + 1)] for i in range(1, x + 1): for j in range(1, y + 1): dp[i][j] = dp[i - 1][j] + dp[i][j - 1] print(dp[x][y])