動態規劃題 leetcode
阿新 • • 發佈:2020-12-10
1.62. 不同路徑
一個機器人位於一個 m x n網格的左上角 (起始點在下圖中標記為 “Start” )。
機器人每次只能向下或者向右移動一步。機器人試圖達到網格的右下角(在下圖中標記為 “Finish” )。
問總共有多少條不同的路徑?
示例 1:
輸入:m = 3, n = 7
輸出:28
示例2:
輸入:m = 3, n = 2 輸出:3 解釋: 從左上角開始,總共有 3 條路徑可以到達右下角。 1. 向右 -> 向右 -> 向下 2. 向右 -> 向下 -> 向右 3. 向下 -> 向右 -> 向右
解法1: 動態規劃, 還是要發現其中的規律
class Solution: def uniquePaths(self, m: int, n: int) -> int: # 隱含了 動態規劃思想: dp(i, j) = dp(i-1, j) + dp(i, j-1) # O(mxn) O(mxn) dp = [] for i in range(m): temp = [] for j in range(n): if i == 0: # 第一行 都為1 temp.append(1) elif j == 0: # 第一列 都為1 temp.append(1) else: # 其餘先為0, temp.append(0) dp.append(temp) 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[-1][-1]