• 62不同路径


    题目: 一个机器人位于一个 m x n 网格的左上角(起始点在下图中标记为“Start” ).机器人每次只能向下或者向右移动一步。机器人试图达到网格的右下角(在下图中标记为“Finish”).问总共有多少条不同的路径?

    来源: https://leetcode-cn.com/problems/unique-paths/

    法一: 参考别人代码

    思路: 关键是要写成状态转移方程.学会自定义多维list(索引不同)的方法.

    class Solution:
        def uniquePaths(self, m: int, n: int) -> int:
            # 注意这里乘m的时候,生成的每一列是同一个索引,
            dp = [[1] * n] * m
            for i in range(1, m):
                for j in range(1, n):
                    dp[i][j] = dp[i][j - 1] + dp[i - 1][j]
            return dp[-1][-1]
    
    class Solution:
        def uniquePaths(self, m: int, n: int) -> int:
            # 这种写法不会有上面的问题,要熟练掌握
            dp = [[0]*(n+1) for i in range(m+1)]
            dp[1][0] = 1
            for i in range(1, m+1):
                for j in range(1, n+1):
                    dp[i][j] = dp[i-1][j] + dp[i][j-1]
            return dp[m][n]
    
    if __name__ == '__main__':
        duixiang = Solution()
        a = duixiang.uniquePaths(3,4)
        print(a)
    View Code

    ccc

    法二: 数学方法,直接用组合方法计算.

  • 相关阅读:
    linux和window双系统下修改系统启动项
    linux下定位文件
    gcc/g++命令
    asp.net(C#)清除全部Session与单个Session
    响应式布局简介
    JS MD5
    遍历 DataSet
    标题背景圆角 随意宽度
    position
    vertical-align:middle图片或者按钮垂直居中
  • 原文地址:https://www.cnblogs.com/xxswkl/p/12093439.html
Copyright © 2020-2023  润新知