有一个M乘N的网格,一个机器人只能走格点且只能向右或向下走,要从左上角走到右下角。请设计一个算法,计算机器人有多少种走法。
递归解法
def countWays(x, y):
if(x == 1 or y == 1):
return 1
return countWays(x - 1, y) + countWays(x, y - 1)
print(countWays(4,4))
动态规划解法
def countWays2(x, y):
dp = []
for i in range(4):
dp.append([0]*4)
for i in range(x):
dp[i][0] = 1
for i in range(y):
dp[0][i] = 1
for i in range(1,x):
for j in range(1,y):
dp[i][j] = dp[i][j - 1] + dp[i - 1][j]
return dp[x - 1][y - 1]
print(countWays2(4,4))
dp存的到达每个位置的走法数