1. 程式人生 > >leet62. 不同路徑

leet62. 不同路徑

題目:

機器人位於一個 m x n 網格的左上角, 在下圖中標記為“Start” (開始)。

機器人每次只能向下或者向右移動一步。機器人試圖達到網格的右下角,在下圖中標記為“Finish”(結束)。

問有多少條不同的路徑?

例如,上圖是一個3 x 7網格。有多少可能的路徑?

注意: m 和 n 的值均不超過 100。

分析:

  1. 動態規劃問題
  2. 對於任意點在右邊界和下邊界的點移動到目標位置,均有1條路徑
  3. 對於非2中的情況f(x,y) = f(x+1,y) + f(x,y+1)

程式碼:

class Solution(object):
    def uniquePaths(self, m, n):
        """
        :type m: int
        :type n: int
        :rtype: int
        """
        def move(x,y,m = m,n = n):
            if x == m - 1 or y == n - 1:
                return 1
            else:
                return move(x + 1,y) + move(x,y + 1)
        return move(0,0,m,n)

思考:

  1. 輸入23,12時計算超時