不同路徑(Python3)

問題描述:一個機器人位於一個 m x n 網格的左上角 (起始點在下圖中標記爲“Start” )。機器人每次只能向下或者向右移動一步。機器人試圖達到網格的右下角(在下圖中標記爲“Finish”)。問總共有多少條不同的路徑?
image.png

示例:
輸入: m = 3, n = 2
輸出: 3
解釋:
從左上角開始,總共有 3 條路徑可以到達右下角。1. 向右 -> 向右 -> 向下 2. 向右 -> 向下 -> 向右 3. 向下 -> 向右 -> 向右

解決思路:使用動態規劃思想,假設到達終點之前我們只有兩種選擇,一種是向下移一位,一種是向右移一位,即
path[m][n] = path[m-1][n]+path[m][n-1]
我們知道path[0][0]=1依次計算到path[m][n]

代碼如下( ̄▽ ̄):

import numpy as np
class Solution:
    def uniquePaths(self, m: int, n: int) -> int:
        res = np.zeros((m, n),dtype=np.int)
        for i in range(0,m):
            for j in range(0,n):
                if j-1>=0 and i-1>=0:
                    res[i][j] = res[i-1][j]+res[i][j-1]
                elif j-1>=0:
                    res[i][j] = res[i][j-1]
                elif i-1>=0:
                    res[i][j] = res[i-1][j]
                else:
                    res[i][j] = 1
        # print(res)
        return res[m-1][n-1]

時間與空間複雜度:
image.png
時間複雜度有點高⁄(⁄ ⁄ ⁄ω⁄ ⁄ ⁄)⁄,因爲是兩層循環,大家有好的方法可以留言啊。

來源:力扣(LeetCode)
鏈接:https://leetcode-cn.com/probl...

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章