【動態規劃】用一維和二維解決不同路徑
宣告:小白總結,本意是記錄自己的思路,不過希望能幫助別人,那就更好啦,若發現問題,歡迎指正,感謝!!
來源:力扣(LeetCode)
連結:62.不同路徑
不同路徑
題目:一個機器人位於一個 m x n 網格的左上角 (起始點在下圖中標記為“Start” )。
機器人每次只能向下或者向右移動一步。機器人試圖達到網格的右下角(在下圖中標記為“Finish”)。
問總共有多少條不同的路徑?
首先,動態規劃的核心是什麼呢?通俗來說,就是記錄已經解決過的子問題的解。
題目分析
題目要找到達右下角的路徑數,而右下角只能通過上方和左方到達,那麼右下角的路徑數,其實就是它上方的路徑數與左方的路徑數和,以此類推,每一個位置的路徑數都是上方與左方的路徑和,特別地,當處於第一行時,每個位置只能從左方來,即路徑數均為1,當處於第一列時,每個位置只能從上方來,路徑數也為1.
二維動態規劃
// java
class Solution {
public int uniquePaths(int m, int n) {
int[][] dp=new int[m][n];
for(int i=0;i<m;i++){
dp[i][0]=1;
}
for(int j=0;j<n;j++){
dp[0][j]=1;
}
for(int i=1;i<m;i++){
for(int j=1;j<n;j++){
dp[i][j]=dp[i-1][j]+dp[i][j-1];
}
}
return dp[m-1][n-1];
}
}
一維動態規劃(優化)
// java
class Solution {
public int uniquePaths(int m, int n) {
int[] dp = new int[n];
for(int i = 0; i < n; i++){
dp[i] = 1;
}
for(int i = 1; i < m; i++){
for(int j = 1; j < n; j++){
dp[j] = dp[j - 1] + dp[j];
}
}
return dp[n - 1];
}
}
感謝各位巨巨們的幫助,希望在記錄分析題目的條件下演算法能有所提升……
相關文章
- 一維動態規劃和二維動態規劃中兩道經典題目動態規劃
- 禮物的最大價值(一維動態規劃&二維動態規劃)動態規劃
- 一維動態規劃總結動態規劃
- DP 動態規劃入門 一維陣列動態規劃陣列
- 動態規劃之最短路徑和動態規劃
- 動態規劃使用一維陣列要注意的問題動態規劃陣列
- 動態規劃如何輸出路徑?動態規劃
- 【動態規劃(一)】動態規劃基礎動態規劃
- 聊聊不太符合常規思維的動態規劃演算法動態規劃演算法
- 全新的動態規劃入門——從維度談起動態規劃
- 程式碼隨想錄演算法訓練營第36天 | 動態規劃基礎2:62.不同路徑、63.不同路徑 II演算法動態規劃
- 應用動態規劃思想解決實際問題動態規劃
- 四步模板解決動態規劃動態規劃
- jq動態生成二維碼
- C++動態建立二維陣列,二維陣列指標,以及動態二維陣列函式傳遞C++陣列指標函式
- 談一談動態規劃和dfs動態規劃
- PHP、Python、JavaScript 識別二維碼和生成二維碼解決方案PHPPythonJavaScript
- 【LeetCode動態規劃#07】01揹包問題一維寫法(狀態壓縮)實戰,其二(目標和、零一和)LeetCode動態規劃
- (39/60)不同路徑、不同路徑Ⅱ
- 動態規劃求解矩陣累計和最大的路徑動態規劃矩陣
- 動態規劃--三角形最小路徑和動態規劃
- 動態規劃解題方法動態規劃
- 【LeetCode動態規劃#06】分割等和子集(01揹包問題一維寫法實戰)LeetCode動態規劃
- 洛谷 1508——Likecloud-吃、吃、吃(多維動態規劃)Cloud動態規劃
- java 動態規劃(三角形最短路徑和)Java動態規劃
- 二維字首和 & 二維差分
- 39天【程式碼隨想錄演算法訓練營34期】第九章 動態規劃part02(● 62.不同路徑 ● 63. 不同路徑 II )演算法動態規劃
- 動態二維碼免費製作
- PHP一維陣列轉二維陣列正規表示式PHP陣列
- 動態規劃動態規劃
- [動態規劃] 五、三角形的最小路徑和動態規劃
- 動態規劃 擺花 題解動態規劃
- 力扣-動態規劃全解力扣動態規劃
- 動態規劃最大欄位和動態規劃
- 機器人路徑規劃其二 A-Star(A*) Algorithm【附動態圖原始碼】機器人Go原始碼
- 動態規劃你學會了嗎(二)?動態規劃
- c++ 一維向量,和二維向量的基本使用C++
- javascript中一維和二維陣列初始化JavaScript陣列