题解 | #求路径#

求路径

http://www.nowcoder.com/practice/166eaff8439d4cd898e3ba933fbc6358

#我提供此题的第二种写法,动态规划前面有人讲解就不说了,用python写,真的简单太多了。

这里一定要导入math包,主要是调用math.factorial

import math

class Solution:

    def uniquePaths(self , m , n ):
  
        x = m+n-2
        
        #注意,python除法用的是 //
        
        res = math.factorial(x) // (math.factorial(m-1)*math.factorial(n-1))

        return res

思路就是,利用组合C(a,b) 意思就是从b个球中,选出a个球的总的方法数

题中,m,n代表路径的最后坐标,

那么到达这个坐标的总的步长为m+n-2(往下走了n-1步,往左走了m-1步) == b

然后从这总的步数选出n-1种(或是m-1种) == a

C(n-1, m+n-2) == !(m+n-2) / !(m-1) * !(n-1)

python有累计公式.factorial。

动态递归/递归法,开销大,很多重复。

class Solution:

    def uniquePaths(self , m , n ):
  
        if m==1 or n==1:
        	return 1
        else:
        	return Solution.uniquePaths(m-1,n) + Solution.uniquePaths(m.n-1)
    
全部评论

相关推荐

重生我想学测开:嵌入式的问题,我准备入行京东外卖了
点赞 评论 收藏
分享
05-12 11:09
已编辑
门头沟学院 后端
已注销:没必要放这么多专业技能的描述。这些应该是默认已会的,写这么多行感觉在凑内容。项目这块感觉再包装包装吧,换个名字,虽然大家的项目基本都是网上套壳的,但是你这也太明显了。放一个业务项目,再放一个技术项目。技术项目,例如中间件的一些扩展和尝试。
点赞 评论 收藏
分享
评论
6
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务