leetcode NO.62 不同路径 白痴讲解 腾讯精选练习50

在这里插入图片描述
动态规划DP
考虑位置(i,j)。到达该位置一共有2条线路,从上面的格子(i-1,j)过来或从左边的格子(i,j-1)过来,不可能从下面的格子和右边的格子过来。所以递推公式path(i,j)=path(i-1,j)+path(i,j-1),边界条件是,(0,j)j=0,…,n-1的和(i,0)i=0,…,m-1的只有一种方式到这些点,所以dp[i][0]=1,dp[0][j]=1,然后就能推出所有情况

class Solution:
    def uniquePaths(self, m: int, n: int) -> int:
        dp = [[0 for i in range(m)] for j in range(n)]
        for i in range(n):
            dp[i][0]=1
        for j in range(m):
            dp[0][j]=1
        
        for i in range(1,n):
            for j in range(1,m):
                dp[i][j] = dp[i-1][j]+dp[i][j-1]        
        return dp[-1][-1]

        

数学法:
机器人一定会走(m-1)+(n-1)=m+n-2步,即从m+n-2中挑出m-1步向下走

class Solution:
    def uniquePaths(self, m: int, n: int) -> int:
        return int(math.factorial(m+n-2)/math.factorial(m-1)/math.factorial(n-1))
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值