博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
LeetCode Unique Paths
阅读量:6974 次
发布时间:2019-06-27

本文共 1014 字,大约阅读时间需要 3 分钟。

LeetCode解题之Unique Paths


原题

机器人从起点到终点有多少条不同的路径。仅仅能向右或者向下走。

unique-path

注意点:

  • 格子大小最大为100*100

样例:

输入: m = 3, n = 7

输出: 28

解题思路

非经常见的小学生奥数题,能够用排列组合来求解,一共要走(m-1)+(n-1)步。当中(m-1)步向下,(n-1)向右。且有公式 mCn = n!/m!(n-m)! 。那么能够用以下的代码求解:

import mathclass Solution(object):    def uniquePaths(self, m, n):        """        :type m: int        :type n: int        :rtype: int        """        m -= 1        n -= 1        return math.factorial(m+n) / (math.factorial(n) * math.factorial(m))

当然了,更常见的一种做法就是动态规划。要到达一个格子仅仅有从它上面或者左边的格子走过来,递推关系式:dp[i][j]=dp[i-1][j]+dp[i][j-1]。初始化条件是左边和上边都仅仅有一条路径。索性在初始化时把全部格子初始化为1。

AC源代码

class Solution(object):    def uniquePaths(self, m, n):        """        :type m: int        :type n: int        :rtype: int        """        dp = [[1 for __ in range(n)] for __ in range(m)]        for i in range(1, n):            for j in range(1, m):                dp[j][i] = dp[j - 1][i] + dp[j][i - 1]        return dp[m - 1][n - 1]if __name__ == "__main__":    assert Solution().uniquePaths(3, 7) == 28

欢迎查看我的()来获得相关源代码。

你可能感兴趣的文章
Hbase 学习(十) HBase Snapshots
查看>>
记一次8小时惊心动魄的服务器+网站升级
查看>>
too many open files
查看>>
Eclispe清除项目缓存无需删除.metadata文件
查看>>
Fedora14升级到Fedora15问题汇总(原创)
查看>>
Oracle数据库语句大全
查看>>
系统知识点笔记
查看>>
Gradle 2.3 发布
查看>>
数据库内核月报 - 2015 / 10-MySQL · 特性分析 · MySQL权限存储与管理
查看>>
Swift教程_零基础学习Swift完整实例(五)_swift完整实例(构建数据层)
查看>>
[Angularjs]asp.net mvc+angularjs+web api单页应用
查看>>
仿Linux中的cp操作
查看>>
【ANDROID游戏开发十五】关于ANDROID 游戏开发中 ONTOUCHEVENT() 触屏事件的性能优化笔记!...
查看>>
移动端web开发 chapter 1 – introduction
查看>>
获取时间的方法及常用时间类
查看>>
Git忽略文件
查看>>
如何删除或重置spfile中的参数
查看>>
Spring Boot 之 HelloWorld详解
查看>>
【RAC】如何修改vip 或者vip 对应的hostname
查看>>
Sql Server之旅——第三站 解惑那些背了多年聚集索引的人
查看>>