62 不同路径

题目 62 不同路径

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

思路

  • 动规数组及其下标含义:
    dp[i][j]:第i行第j列有dp[i][j]条路径
  • 递推公式:
    得到dp[i][j]的路径有两个,一个是dp[i-1][j],一个是dp[i][j-1]
    dp[i][j] = dp[i-1][j] + dp[i][j-1]
  • 初始化:
    第一行为1,第一列为1,第一个值和其他值均可。
  • 遍历方式:
    按行从左到右遍历
  • 举例验证:
    自己画图写写即可

代码

class Solution:
    def uniquePaths(self, m: int, n: int) -> int:
        dp = [[1]*n for i in range(m)]
        for i in range(1, m):
            for j in range(1, n):
                dp[i][j] = dp[i-1][j] + dp[i][j-1]
        return dp[m-1][n-1]
posted @ 2022-10-26 20:10  时光如你般美好  阅读(8)  评论(0编辑  收藏  举报