leetcode不同路徑

2021-10-03 15:40:38 字數 850 閱讀 2668

1.深度優先搜尋

從finish點開始,往回走,每次是往上走,往右走,當回到0,0點時,路徑數量加1

**如下:

class solution 

void dfs(int m,int n,int r,int c)

};

但是這種方法可能會超時

2.利用數學公式

地圖矩陣為m行,n列,從左上角到右下角一共需要走m+n-2步,總的路徑中可以分為m-1步向右,n-1步向下

即求cm+n-2,m-1或cm+n-2,n-1的值   兩者值相等。

公式如下:

這種方法需要考慮溢位

3.動態規劃

dp[i][j]表示到達(i,j)的路徑數量,其只能來自兩個方向,dp[i][j-1],dp[i-1][j];故狀態轉移方程是

dp[i][j]=dp[i-1][j]+dp[i][j-1];

初始化為:i為0時,dp[i][j]=0;j=0時,dp[i][j]=0;

**如下:

class solution {

public:

int uniquepaths(int m, int n) {

vector> dp(m,vector(n,0));

for(int i=0;i時間複雜度o(m*n),空間複雜度o(m*n)

不同路徑(LeetCode)

乙個機械人位於乙個 m x n 網格的左上角 起始點在下圖中標記為 start 機械人每次只能向下或者向右移動一步。機械人試圖達到網格的右下角 在下圖中標記為 finish 問總共有多少條不同的路徑?例如,上圖是乙個7 x 3 的網格。有多少可能的路徑?說明 m 和 n 的值均不超過 100。示例 ...

不同路徑(leetcode)

題目 物體怎樣從左上角移動到右下角,其中1表示有障礙,不能行走。思路 知道整個方框的行和列。對第一行和第一列進行填充1,當碰到1 障礙 填充0。本題可以被視為乙個動態規劃的問題,從上到下,從左到右,其中到達乙個終點的路徑總是左邊路徑 上面路徑。即 d p i j dp i 1 j dp i j 1 ...

LeetCode 不同路徑

乙個機械人位於乙個 m x n 網格的左上角 起始點在下圖中標記為 start 機械人每次只能向下或者向右移動一步。機械人試圖達到網格的右下角 在下圖中標記為 finish 問總共有多少條不同的路徑?示例 1 輸入 m 3,n 7 輸出 28 示例 2 輸入 m 3,n 2 輸出 3 解釋 從左上角...