LeetCode62. 不同路径 动态规划 python3实现
2018-09-13 13:02
453 查看
一个机器人位于一个 m x n 网格的左上角 (起始点在下图中标记为“Start” )。
机器人每次只能向下或者向右移动一步。机器人试图达到网格的右下角(在下图中标记为“Finish”)。
问总共有多少条不同的路径?
例如,上图是一个7 x 3 的网格。有多少可能的路径?
说明:m 和 n 的值均不超过 100。
示例 1:
输入: m = 3, n = 2 输出: 3 解释: 从左上角开始,总共有 3 条路径可以到达右下角。 1. 向右 -> 向右 -> 向下 2. 向右 -> 向下 -> 向右 3. 向下 -> 向右 -> 向右
示例 2:
输入: m = 7, n = 3 输出: 28
这道题也是一个很明显的动态规划类型的简单题,其求解目的为到达某一点的最多的可能性.
根据动态规划来思考,只要我们求出了到达每一个点的最大路径数,由于只能向下向右走,则最后一个点的最大路径数不就是前两个的最大路径之和想加么,即得出状态转移方程
[code]p[i][j] = p[i][j-1]+p[i-1][j]
于是简单得出
[code]class Solution: def uniquePaths(self, m, n): """ :type m: int :type n: int :rtype: int """ p = [[0 for i in range(m)] for k in range(n)] for i in range(len(p)): for j in range(len(p[0])): if i == 0 or j==0: p[i][j] = 1 else: p[i][j] = p[i][j-1]+p[i-1][j] return p[n-1][m-1]
阅读更多
相关文章推荐
- Leetcode 062 不同路径 Python (动态规划)
- LeetCode题库解答与分析——#62. 不同路径UniquePaths
- Leetcode 063 不同路径|| Python C++ 详细题解
- 动态规划 python 实现 三角形最大值路径
- LeetCode --- 62. 不同路径
- leetcode的python实现 刷题笔记70:爬楼梯(动态规划)
- LeetCode63. 不同路径 II 动态规划 python3
- leetcode的python实现 刷题笔记13: 罗马数字转整数
- leetcode的python实现 刷题笔记14:最长公共前缀
- 第六课 自己实现路由改进,针对不同请求的路径进行响应
- LeetCode-115.不同的子序列(相关话题:动态规划)
- leetcode 【 Reverse Nodes in k-Group 】 python 实现
- leetcode的python实现 刷题笔记35:搜索插入位置的暴力解法和优化解法
- LeetCode 72 Edit Distance(Python详解及实现)
- python实现高速排序算法(两种不同实现方式)
- [leetcode] 19. Remove Nth Node From End of List python实现【easy】
- [leetcode]20. Valid Parentheses ,有效的括号符串python实现【easy】
- LeetCode 76. Minimum Window Substring--Python实现
- leetcode 【 Find Peak Element 】python 实现
- python实现 LeetCode36——Count and Say