[dp題解]矩陣最小路徑和問題
【題目】給定乙個矩陣,例如demo,從左上角開始每次只能向右或者向下走,最後到達右下角的位置,路徑上所有的數字累加起來就是路徑和,返回所有的路徑和中最小的路徑和。
演算法分析:
這是乙個典型的動態規劃演算法問題。
分析如下:
例如下圖中的矩陣demo,1-3-1-0-6-1-0 的路徑和最小,值為12.
再看:
例如:
由此進行演算法設計:
注意:下面**中的矩陣是通過隨機數生成的。(與分析過程中的例項矩陣數值不同)
package com.bean.algorithmexec;
public class matrixpath
int row=m.length;
int col=m[0].length;
int dp=new int[row][col];
dp[0][0] = m[0][0];
for(int i=1;i輸出結果為:
結果可以自己來分析~
6 9 4 10
5 4 6 3
1 3 5 7
9 6 4 3
sum = 27
上面的演算法設計中,矩陣一共有m*n個位置,每個位置都計算一次從(0,0)位置到達自己的最小路徑和,計算的時候只是比較上邊位置的最小路徑與左邊位置的最小路徑和哪個更小,所以時間複雜度為o(m*n),dp矩陣的大小為m*n,所以額外空間複雜度為o(m*n)。
動態規劃演算法
public static int minpathsum(int m)
int row=m.length;
int col=m[0].length;
int dp=new int[row][col];
dp[0][0] = m[0][0];
for(int i=1;ileetcode提交之後,accepted!
上面的dp演算法過程還可以在進一步進行優化。
後續補充。
矩陣的最小路徑和 DP
從本文開始,我打算多刷一些動態規劃的題。不僅如此,各種典型演算法也會在分類刷一刷。題目 給定乙個矩陣,從左上角開始每次只能向右或者右下走,最後到達右下角的位置,路徑上所有數字累加起來就是路徑和,返回所有路徑中最小的路徑和。舉例 如果給定的m如下 1,3,5,9 8,1,3,4 5,0,6,1 8,8...
DP 矩陣的最小路徑和
給定乙個矩陣m,從左上角開始每次只能向右或者向下走,最後到達右下角的位置,路徑上所有的樹子累加起來就是路徑和,返回所有的路徑中最小的路徑和.這是一道經典的動態規劃題,狀態轉移方程為dp i j min m i j 可以用乙個二維的dp矩陣來求解.對於dp矩陣,第一行和第一列只會有一種走法,就是從左到...
矩陣最小路徑
原創 問題描述 給出乙個 n x m 的矩陣,從左上角開始每次只能向右走或者向下走,最後達到右下角的位置,路徑中所有數字累加起來就是路徑和,返回所有路徑的最小路徑和。比如 1 3 5 9 8 1 3 4 5 0 6 1 8 8 4 0 最短路徑是12 解題思路 此題屬於動態規劃類題目,我們可以用乙個...