题目
提示:以下是本篇文章正文内容,下面案例可供参考
解题思路
1.带备忘录的递归
题目分析如下:
代码如下:
class Solution:
def uniquePaths(self, m: int, n: int) -> int:
memo=dict()
def dfs(row,col): # 求到达某个坐标 有多少条路径 3 3
if row==0 or col==0:
return 1
if (row,col) in memo:
return memo[(row,col)]
else:
memo[(row,col)]=dfs(row-1,col)+dfs(row,col-1)
return memo[(row,col)]
return dfs(m-1,n-1)
2.dp数组的迭代求解
代码如下:
class Solution:
def uniquePaths(self, m: int, n: int) -> int:
# dp = [[1]*n] + [[1]+[0] * (n-1) for _ in range(m-1)]
dp=[[0]*n for _ in range(m)] # m行n列的全零元素 第0行均为1条 第0均列为1条 这是结束条件
for i in range(n):
dp[0][i]=1
for j in range(m):
dp[j][0]=1
for row in range(1,m):
for col in range(1,n):
dp[row][col]=dp[row-1][col]+dp[row][col-1]
return dp[m-1][n-1]