leetcode 62.不同路径-python【带备忘录的递归+dp数组的迭代求解(动态规划)】

题目

在这里插入图片描述


提示:以下是本篇文章正文内容,下面案例可供参考

解题思路

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]

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值