62 不同路徑63 不同路徑 II

2022-10-07 21:09:13 字數 937 閱讀 9433

62.不同路徑

// 動態規劃清晰步驟: 1. 定義dp陣列 2. 初始化 3. 迴圈填充 4. 返回結果

class solution

}// 4. 返回結果

return dp[m - 1][n - 1];

}}// 動態規劃寫法2: 內部解決初始化問題

class solution2 else if (i != 0 && j == 0) else if (i == 0 && j == 0) else }}

return dp[m - 1][n - 1];

}}// 深度優先搜尋dfs: 可以遍歷二叉樹, 可以從頭到尾遍歷每一條路徑(更徹底), 但是本題只需要知道多少條路徑。所以是充分不必要條件。

// 所有尋路的過程可以連線成乙個二叉樹, 每個葉子節點說明一條路徑

class solution3

public int uniquepaths(int m, int n)

}// 剪枝, leetcode中還是會超時

class solution4

public int uniquepaths(int m, int n)

}// 排列組合思路:我們需要移動 (m - 1) + (n - 1)次,其中有 m−1 次向下移動,n−1 次向右移動。因此路徑的總數,就等於從 m+n−2 次移動中選擇 m−1 次向下移動的方案數,即組合數:

// 計算是全排列然後去重

63. 不同路徑 ii

// 本題很簡單, 只需要將62題, dp陣列對於障礙物的位置改為0即可: 1. 定義dp陣列 2. 初始化 3. 迴圈填充 4. 返回結果

class solution

}// 4. 返回結果

return dp[m - 1][n - 1];

}}

63 不同路徑 II

乙個機械人位於乙個 m x n 網格的左上角 起始點在下圖中標記為 start 機械人每次只能向下或者向右移動一步。機械人試圖達到網格的右下角 在下圖中標記為 finish 現在考慮網格中有障礙物。那麼從左上角到右下角將會有多少條不同的路徑?網格中的障礙物和空位置分別用1和0來表示。說明 m 和 n...

63 不同路徑 II

dfs深度優先 超出時間限制 class solution def uniquepathswithobstacles self,obstaclegrid list list int int if obstaclegrid return 0if obstaclegrid 0 0 1 return 0 ...

63 不同路徑 II

乙個機械人位於乙個 m x n 網格的左上角 起始點在下圖中標記為 start 機械人每次只能向下或者向右移動一步。機械人試圖達到網格的右下角 在下圖中標記為 finish 現在考慮網格中有障礙物。那麼從左上角到右下角將會有多少條不同的路徑?網格中的障礙物和空位置分別用 1 和 0 來表示。說明 m...