Python中的唯一路徑
假設有一個機器人位於n x m網格(n行m列)的左上角。機器人每次只能向下或向右移動。機器人想要到達網格的右下角(下圖中標有“END”)。所以我們必須找到有多少種可能的唯一路徑?例如,如果m = 3且n = 2,則網格如下所示:
| 機器人 | ||
| 終點(END) |
輸出將是3,因此共有3種不同的方法可以從起始位置到達終點位置。這些路徑是:
- 右 → 右 → 下
- 右 → 下 → 右
- 下 → 右 → 右
讓我們看看步驟:
- 我們將使用動態規劃方法來解決這個問題
- 令row := n,col := m,建立一個n x m階的DP表,並將其填充為-1
- DP[row – 2, col - 1] := 1
- 對於i從0到col
- DP[n – 1, i] := 1
- 對於i從0到row
- DP[i, col – 1] := 1
- 對於i從row -2遞減到-1
- 對於j從col -2遞減到-1
- DP[i, j] := DP[i + 1, j] + DP[i, j + 1]
- 對於j從col -2遞減到-1
- 返回DP[0, 0]
讓我們看看下面的實現,以便更好地理解:
示例
class Solution(object): def uniquePaths(self, m, n): row = n column = m dp = [[-1 for i in range(m)] for j in range(n)] dp[row-2][column-1] = 1 for i in range(column): dp[n-1][i] = 1 for i in range(row): dp[i][column-1]=1 for i in range(row-2,-1,-1): for j in range(column-2,-1,-1): dp[i][j] = dp[i+1][j] + dp[i][j+1] return dp[0][0] ob1 = Solution() print(ob1.uniquePaths(10,3))
輸入
10 3
輸出
55
廣告
資料結構
網路
關係型資料庫管理系統 (RDBMS)
作業系統
Java
iOS
HTML
CSS
Android
Python
C語言程式設計
C++
C#
MongoDB
MySQL
Javascript
PHP